python - PyQt5:如何通过单击按钮打开新对话框

标签 python pyqt pyqt5 qpushbutton qdialog

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 Designer制作了3个.ui文件。

  1. 主页.ui
  2. LoginPage.ui
  3. RegisterPage.ui

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

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

最佳答案

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

...
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_()
...

关于python - PyQt5:如何通过单击按钮打开新对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49951049/

相关文章:

python 2.7 : rounding down instead of rounding up

python - 如何将一行编辑的焦点更改为另一行编辑

python - 如何在 QTest 中关闭 QFileDialog.getOpenFileName?

python - QSQLTableModel 中的格式化值出现问题

python - 在 PySpark Dataframe 中向数组内的元素添加天数

python - 我在 python/twisted 中收到 'nonetype' 不可迭代错误

python - Django 对象更改模型字段

python - 从 numpy 数组更新 QpushButton 图标不起作用

python - QSound 在对象内部的意外行为

python - 参数 1 具有意外类型 'NoneType'?