在PyQt4上显示连续的Windows

时间:2014-10-31 12:40:28

标签: python pyqt4

我是PyQt4的新人。我的问题非常简单:我无法打开密码窗口,并在进行身份验证后关闭/隐藏它,然后打开一个新的单独窗口。第二个窗口消失得很快。我的方法就是这样(简化):

import sys, time
from PyQt4 import QtGui

class Window2(QtGui.QWidget):
    def __init__(self):
        super(Window2, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Window2')
        # ...add the widgets, etc.
        self.show()

class PasswordWindow(QtGui.QWidget):
    def __init__(self):
        super(PasswordWindow, self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('PasswordWindow')
        self.show()
        # ...Here, I'd input the password, authenticate, etc
        self.hide() 
        w2 = window2()  # go to the true main window

def main():
    app = QtGui.QApplication(sys.argv)
    pw = PasswordWindow()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

提前致谢!

2 个答案:

答案 0 :(得分:0)

我认为这与Window2函数本地的PasswordWindow.initUI对象有关。当我更换

w2 = Window2()

self.w2 = Window2()

我得到了预期的效果。

答案 1 :(得分:0)

为了清楚起见,当initUi返回时,w2会被破坏。执行self.w2 = Window2()将w2分配给密码窗口对象,因此w2将存在,直到密码对象被销毁。