我有两个自定义小部件(两个基于QtGui.QWidget的类)。在QtGui.QMainWindow的__init__
中,我创建了他们的实例:
self.MyWidget1 = MyWidget1()
self.MyWidget2 = MyWidget2()
__init__
部分还有两个按钮(QtGui.QPushButton),当用户点击每个按钮时,有两个按钮:
def clickButton1(self):
self.setCentralWidget(self.MyWidget1)
def clickButton2(self):
self.setCentralWidget(self.MyWidget2)
但它仅在第一次点击时起作用,然后PyQt说底层小部件(MyWidget1或MyWidget2)被删除了。我认为这是由 sip 模块完成的。有没有办法防止在重置中央窗口小部件后删除窗口小部件?谢谢!
答案 0 :(得分:2)
我认为这几乎是不可能的。
来自setCentralWidget docs:
注意:QMainWindow取得小部件指针的所有权,并在适当的时候删除。
因此,您应该创建新的MyWidget
实例。
def clickButton2(self):
self.setCentralWidget(MyWidget2())
但这样做的正确方法是使用QStackedWidget