【问题标题】:PyQt4: Second window does not showPyQt4:第二个窗口不显示
【发布时间】: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
  • 我做了一些改变,并没有在菜单中传递自我.....仍然没有运气

标签: python-3.x pyqt pyqt4


【解决方案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

【讨论】:

    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多