我尝试在PyQT4(python 3.3)中实现一个非常简单的事情: 从按钮调用新窗口。
到目前为止,我有一个第二类(我的第二个窗口,现在是空的)......:
class Window2(QtGui.QWidget):
def __init__(self):
super(Window2, self).__init__()
self.initUI2()
def initUI2(self):
self.vbox2 = QtGui.QVBoxLayout()
self.setLayout(self.vbox2)
self.setGeometry(300, 300, 200, 120)
self.setWindowTitle('Image Bits')
self.show()
def main2():
w2 = QtGui.QWidget()
w2.resize(150, 150)
w2.move(300, 300)
w2.setWindowTitle('Window2')
w2.show()
在我的主类中被这个函数调用:
def FN_OpenWindow2(self):
win2 = Window2()
#Display it
win2.show()
此按钮在同一类中调用的函数:
self.NextButton = QtGui.QPushButton("Next")
self.NextButton.setCheckable(True)
self.NextButton.clicked[bool].connect(self.FN_OpenWindow2)
我一定不能完全错,因为我确实已经打开了第二个窗口并打开......几秒钟......我想只有按钮被“推”的时间。
所以这是我的问题,我如何保持对Window2类实例的引用?所以一旦被称为它留在这里(如果我再次按下相同的按钮,我将破坏/创建刷新,这是我的计划)。
希望我很清楚,如果不是道歉,我对Python很新。
谢谢!
答案 0 :(得分:0)
正如你所说,你只需要继续引用新窗口。 例如。只需将其存储在主类中:
def FN_OpenWindow2(self):
self.win2 = Window2()
#Display it
self.win2.show()
或者,如果您可以有多个,请将其列为一个列表:
def __init__(self,...):
# initialize an empty list in you main class' init function
self.secondaryWindows = []
def FN_OpenWindow2(self):
win2 = Window2()
#Display it
win2.show()
# append the window to the list
self.secondaryWindows.append(win2)
请注意,当您再次关闭这些小部件时,引用将保留。 所以可能需要添加额外的逻辑来清除那时的引用。