PyQt5:如何通过单击按钮打开一个新对话框
PyQt5: How to open a new Dialog with button click
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 文件
- HomePage.ui
- LoginPage.ui
- RegisterPage.ui
使用这段代码,我可以显示主页,它有 2 个按钮。当我按下一个按钮时,LoginPage 或 RegisterPage 应该打开。
这就是问题所在,我不知道如何显示其他2个Dialogs。任何帮助将不胜感激
很简单,您必须在插槽中创建对象并显示它们:
...
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_()
...
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 文件- HomePage.ui
- LoginPage.ui
- RegisterPage.ui
使用这段代码,我可以显示主页,它有 2 个按钮。当我按下一个按钮时,LoginPage 或 RegisterPage 应该打开。
这就是问题所在,我不知道如何显示其他2个Dialogs。任何帮助将不胜感激
很简单,您必须在插槽中创建对象并显示它们:
...
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_()
...