PyQt4:第二个窗口不显示
Posted
技术标签:
【中文标题】PyQt4:第二个窗口不显示【英文标题】:PyQt4: Second window does not show 【发布时间】:2016-09-30 13:45:20 【问题描述】:这是打开登录页面的代码 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_())
代码运行良好,没有任何错误,但是当我单击登录按钮时,登录页面关闭但菜单页面没有出现。它根本不显示。
【问题讨论】:
menu
不接受任何参数,你为什么要传递它self
?
我做了一些改变,并没有在菜单中传递自我.....仍然没有运气
【参考方案1】:
如果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。
【讨论】:
以上是关于PyQt4:第二个窗口不显示的主要内容,如果未能解决你的问题,请参考以下文章