PyQt4:第二个窗口没有显示

时间:2016-09-30 13:45:20

标签: python-3.x pyqt pyqt4

以下是代码 open.py (主文件),它打开一个登录页面,其中包含一个按钮,单击该按钮可关闭登录页面并打开菜单页面:

from PyQt4 import QtGui
import sys
from loginpage import Ui_loginPage
from menu import Ui_Menu

class Form1(QtGui.QWidget, Ui_loginPage):
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.setupUi(self)
        self.login.clicked.connect(self.handleButton)
        self.window2 = None

    def handleButton(self):
        self.close()
        if self.window2 is None:
            self.window2 = menu(self)
        self.window2.show()
        sys.exit(app.exec_())


class menu(QtGui.QWidget, Ui_Menu):     
    def __init__(self,parent=None):
        QtGui.QWidget.__init__(self,parent)
        self.setupUi(self)

if __name__ == '__main__':       

    app = QtGui.QApplication(sys.argv)
    window = Form1()
    window.show()
    sys.exit(app.exec_())

代码运行正常,没有任何错误,但是当我单击登录按钮时,登录页面关闭但菜单页面不会出现。它根本就没有显示出来。

1 个答案:

答案 0 :(得分:0)

如果menu窗口是Form1窗口的子窗口,则在Form1窗口关闭时它将被隐藏 - 所以不要给它父窗口。您也不应该再次调用sys.exit(app.exec_()),因此您的代码应如下所示:

class Form1(QtGui.QWidget, Ui_loginPage):
    ...

    def handleButton(self):
        self.close()
        if self.window2 is None:
            self.window2 = menu()
        self.window2.show()

PS:有关如何在PyQt中实现登录对话框的更完整示例,请参阅this answer