Python GUI MDI子窗口仅在第一次按下按钮时显示
我希望这里有一个简单的问题。我已经用QT设计器和MDI区域的子窗口创建了一个非常大的GUI。我使用pyuic5将它从Python GUI MDI子窗口仅在第一次按下按钮时显示,python,python-3.x,pyqt,pyqt5,qmdiarea,Python,Python 3.x,Pyqt,Pyqt5,Qmdiarea,我希望这里有一个简单的问题。我已经用QT设计器和MDI区域的子窗口创建了一个非常大的GUI。我使用pyuic5将它从.ui文件转换为.py文件。我编写了一个函数,当按下按钮时打开子窗口。我第一次按下按钮时,它工作正常。我遇到的问题是,第二次按下按钮时,MDI区域内只显示一个空白子窗口。如何在每次按下按钮时使其正确显示。我将在下面附上如何启动子窗口的代码。任何建议都将不胜感激。谢谢你的时间和帮助 单击按钮时调用的代码 def windowaction(self): sub = QtWid
.ui
文件转换为.py
文件。我编写了一个函数,当按下按钮时打开子窗口。我第一次按下按钮时,它工作正常。我遇到的问题是,第二次按下按钮时,MDI区域内只显示一个空白子窗口。如何在每次按下按钮时使其正确显示。我将在下面附上如何启动子窗口的代码。任何建议都将不胜感激。谢谢你的时间和帮助
单击按钮时调用的代码
def windowaction(self):
sub = QtWidgets.QMdiSubWindow()
sub.setWidget(self.Load_Input)
sub.setObjectName("Load_Input_window")
sub.setWindowTitle("Load Input")
self.mdiArea.addSubWindow(sub)
sub.show()
第一次单击按钮时
第二次单击按钮
将相同的小部件对象添加到不同的
qmdusibwindow
时会出现问题,您必须创建一个新对象并将其添加到新的qmdusibwindow
def windowaction(self):
sub = QtWidgets.QMdiSubWindow()
Load_Input = LoadInput()
sub.setWidget(Load_Input)
sub.setObjectName("Load_Input_window")
sub.setWindowTitle("Load Input")
self.mdiArea.addSubWindow(sub)
sub.show()
谢谢你的回复。当我尝试那个代码时,我得到一个错误,上面写着“
TypeError:'QWidget'对象不可调用”
。我注意到唯一的区别是您有Load\u Input=LoadInput()
,其中我有相当于Load\u Input=LoadInput
。()
有什么区别。另外,因为我正在创建一个新对象,所以在创建新对象之前删除旧对象会更好吗?最后,我希望一次只打开一个“加载输入”窗口。在您的代码中,您应该执行类似于self.Load_input=,您可以向我显示该行代码,或者通过github、dropbox或类似工具共享您的项目。我刚刚制作了一个github存储库,可以在此处找到。此外,该函数位于Main.py
文件中。我正试图将其全部分离。您可以共享ui文件。您必须分离每个窗口的设计,创建一个新表单,在下面我已分离的部分中,当您创建类对象时,您必须执行类似于obj=myclass()
,而不是使用已创建的对象。