PyQt5登录跳转界面设计
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton, QWidget, \QFormLayout, QMessageBox, QSpacerItem, QSizePolicyclass LoginDialog(QDialog): dialog_signal=pyqtSignal(bool)def __init__(self, parent=None):super(LoginDialog, self).__init__(parent)self.setWindowTitle('登录')self.initUI()self.resize(400, 400)def initUI(self):layout = QVBoxLayout()self.username_label = QLabel('用户名:')self.username_input = QLineEdit()self.vspacer = QSpacerItem(50, 50, QSizePolicy.Minimum, QSizePolicy.Expanding) layout.addSpacerItem(self.vspacer)layout.addWidget(self.username_label)layout.addWidget(self.username_input)self.password_label = QLabel('密码:')self.password_input = QLineEdit()self.password_input.setEchoMode(QLineEdit.Password)layout.addWidget(self.password_label)layout.addWidget(self.password_input)layout.addSpacerItem(self.vspacer)self.login_button = QPushButton('登录')self.login_button.clicked.connect(self.on_login)layout.addWidget(self.login_button)layout.addSpacerItem(self.vspacer)self.setLayout(layout)def on_login(self):username = self.username_input.text()password = self.password_input.text()if username == 'admin' and password == '1':self.dialog_signal.emit(True) else:self.dialog_signal.emit(False) class MainWindow(QMainWindow): def __init__(self, parent=None):super(MainWindow, self).__init__(parent)self.setWindowTitle('主页面')self.Page1=Page1Dialog(self) self.Page2=Page2Dialog(self) self.initUI()self.resize(400, 400)def initUI(self):self.page1_btn = QPushButton('界面1')self.page1_btn.clicked.connect(self.page1_btn_clicked)self.page2_btn = QPushButton('界面2')self.page2_btn.clicked.connect(self.page2_btn_clicked)self.vbox = QVBoxLayout()self.vbox.addWidget(self.page1_btn)self.vbox.addWidget(self.page2_btn)widGet = QWidget()widGet.setLayout(self.vbox)self.setCentralWidget(widGet)def page1_btn_clicked(self): self.Page1.show()def page2_btn_clicked(self): self.Page2.show()class Page1Dialog(QDialog): def __init__(self, parent=None):super(QDialog, self).__init__(parent)self.setWindowTitle('界面1')self.initUI()self.resize(400, 400)def initUI(self):self.line_input = QLineEdit()self.line_output = QLineEdit()self.label_input = QLabel('输入')self.line_input.textChanged.connect(self.line_output_getValue)self.label_output = QLabel('输出')gridlayout_input = QFormLayout()gridlayout_output = QFormLayout()gridlayout_input.addRow(self.label_input, self.line_input)gridlayout_output.addRow(self.label_output, self.line_output)self.vbox=QVBoxLayout()self.vbox.addLayout(gridlayout_input)self.vbox.addLayout(gridlayout_output)self.setLayout(self.vbox)def line_output_getValue(self):self.line_output.setText(self.line_input.text())class Page2Dialog(QDialog): def __init__(self, parent=None):super(QDialog, self).__init__(parent)self.setWindowTitle('界面2')self.initUI()self.resize(400, 400)def initUI(self):self.line_input = QLineEdit()self.line_input.textChanged.connect(self.line_output_getValue)self.line_output = QLineEdit()self.label_input = QLabel('输入')self.label_output = QLabel('输出')gridlayout_input = QFormLayout()gridlayout_output = QFormLayout()gridlayout_input.addRow(self.label_input, self.line_input)gridlayout_output.addRow(self.label_output, self.line_output)self.vbox=QVBoxLayout()self.vbox.addLayout(gridlayout_input)self.vbox.addLayout(gridlayout_output)self.setLayout(self.vbox)def line_output_getValue(self):self.line_output.setText(self.line_input.text())class App(QApplication):def __init__(self, sys_argv):super(App, self).__init__(sys_argv)self.main_window = MainWindow()self.login_dialog = LoginDialog()self.login_dialog.dialog_signal.connect(self.on_login_finished)self.login_dialog.show()def on_login_finished(self, result): if result: self.login_dialog.close() self.main_window.show() else: QMessageBox.critical(None, '错误提示', '账号或密码输入错误', QMessageBox.Ok) if __name__ == '__main__':app = App(sys.argv)sys.exit(app.exec_())
程序运行截图