我正在创建一个PyQt4 gui,允许qmainwindow中的用户输入一些初始参数,然后单击开始按钮开始一个程序。单击开始按钮时,将出现一个显示参数的新窗口,程序将开始。我希望用户能够启动该程序的多个实例。但是,当在qmainwindow中更改参数并再次单击开始按钮时,第一个程序窗口将消失。
有没有办法让开始按钮调用与第一个窗口同时运行的第二个窗口?我想这会像线程一样,但从我读过的内容来看,PyQt4似乎没有一种在应用程序中进行线程化的方法。
非常感谢任何帮助。
答案 0 :(得分:1)
我猜你是在同一个变量中保存对新创建的窗口的引用。如果要创建多个窗口,请尝试将该窗口的引用保存在单独的变量中,即每个窗口都应该具有它自己的引用变量。
def showWindow(self):
self.child = Window(self)
self.child.show()
如果这是你的情况,第一个窗口将在第二次showWindow()
执行时松开它的引用。因为self.child
将包含对第二个窗口的引用,导致关闭第一个窗口,因为第一个窗口没有引用引用。一旦小部件在Qt中丢失引用,小部件将被销毁。要克服这个问题,请维护一个变量列表:
# declare a list in __init__ as self.widgetList = []
def showWindow(self):
win = Window(self):
win.show()
self.widgetList.append(win)