【问题标题】:PyQt5: How to open a new Dialog with button clickPyQt5:如何通过单击按钮打开一个新对话框
【发布时间】:2018-10-01 17:25:58
【问题描述】:
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic import loadUi

class LoginPage(QDialog):
    def __init__(self):
        super(LoginPage, self).__init__()
        loadUi('LoginPage.ui', self)

class RegisterPage(QDialog):
    def __init__(self):
        super(RegisterPage, self).__init__()
        loadUi('RegisterPage.ui', self)


class HomePage(QDialog):
    def __init__(self):
        super(HomePage, self).__init__()
        loadUi('HomePage.ui', self)
        #self.btnLoginPage.clicked.connect(self.executeLoginPage)
        #self.btnRegisterPage.clicked.connect(self.executeRegisterPage)

app = QApplication(sys.argv)
widget = HomePage()
widget.show()
sys.exit(app.exec_())

我使用 qt 设计器制作了 3 个 .ui 文件。

  1. 主页.ui
  2. 登录页面.ui
  3. RegisterPage.ui

使用此代码,我可以显示有 2 个按钮的主页。当我按下按钮时,LoginPage 或 RegisterPage 应该会打开。

这就是问题所在,我不知道如何显示其他 2 个对话框。任何帮助将不胜感激

【问题讨论】:

    标签: python pyqt pyqt5 qpushbutton qdialog


    【解决方案1】:

    很简单,你必须在插槽中创建对象并显示它们:

    ...
    class HomePage(QDialog):
        def __init__(self):
            super(HomePage, self).__init__()
            loadUi('HomePage.ui', self)
            self.btnLoginPage.clicked.connect(self.executeLoginPage)
            self.btnRegisterPage.clicked.connect(self.executeRegisterPage)
    
        def executeLoginPage(self):
            login_page = LoginPage()
            login_page.exec_()
    
        def executeRegisterPage(self):
            register_page = RegisterPage()
            register_page.exec_()
    ...
    

    【讨论】:

      猜你喜欢
      • 2019-04-12
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多