PyQt5登录跳转界面设计
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton, QWidget, \
QFormLayout, QMessageBox, QSpacerItem, QSizePolicy
class 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_())
程序运行截图
