以下是代码 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_())
代码运行正常,没有任何错误,但是当我单击登录按钮时,登录页面关闭但菜单页面不会出现。它根本就没有显示出来。
答案 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。