我想在我的應用程序中嵌入QStackedWidget
。不幸的是,在我的試驗中,調整ApplicationWindow
的大小並不會導致調整大小MyMplCanvas
了。調整QStackedWidget的大小
如果我使用替代方法將MyMplCanvas
包含在ApplicationWindow
中,調整大小將按預期工作。所以我期望MyMplCanvas
的定義是正確的,而且必須在QStackedWidget
處調整一些東西。
from PyQt4 import QtGui, QtCore
import sys
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class MyMplCanvas(FigureCanvas):
def __init__(self, parent=None):
self.fig = Figure()
FigureCanvas.__init__(self, self.fig)
self.setParent(parent)
self.fig.add_subplot(111).plot((1, 2, 3), (4, 3, 4))
FigureCanvas.setSizePolicy(self,
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
class ApplicationWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.main_widget = QtGui.QWidget(self)
# Plot object
plot1=MyMplCanvas()
# With this definition it would resize as expected
# l = QtGui.QVBoxLayout(self.main_widget)
# l.addWidget(plot1)
# Unfortunatly it is not resizing if I use QStackedWidget
self.viewsStack = QtGui.QStackedWidget(self.main_widget)
self.viewsStack.setSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
self.viewsStack.addWidget(plot1)
# General code
self.main_widget.setFocus()
self.setCentralWidget(self.main_widget)
if __name__ == '__main__':
qApp = QtGui.QApplication(sys.argv)
aw = ApplicationWindow()
aw.show()
sys.exit(qApp.exec_())
謝謝你的有益解釋three_pinapples。這聽起來很合理。不幸的是,我沒有時間去檢查它是否有個人原因。但隨着你的提示,我有信心取得成功。 – BerndGit
測試了您的反饋並找到了解決方案。謝謝! – BerndGit
幾周後,我終於找到時間繼續我的項目。不幸的是後續問題發生:http://stackoverflow.com/questions/33679216/resizing-of-qstackedwidget-part-2。也許你有一個quickfix three_pineapples?謝謝, – BerndGit