界面的跳转主要步骤
1.在Qt Designer中将按钮进行信号与槽的链接,如login.ui界面中信号设为clicked,槽设为
check_login()。
2.在界面设计的程序login_pane中添加函数check_login()#输入正确密码和账户后进入新的界面
def check_login(self): account=self.edt_username.text() pwd = self.edt_password.text() self.check_login_signal.emit(account, pwd)#信号带着账号和密码的发射
3.自建信号,将密码和账号信息通过槽函数发射到主界面,在主界面将相应的信号与主界面要实现功能的函数进行链接。
check_login_signal = pyqtSignal(str, str) # 自制信号 login_pane.py login_pane1.check_login_signal.connect(check_login) # main.py中将相应信号与主界面要实现功能的函数进行链接。
def check_login(account,pwd): #主界面要实现功能的函数 if account=="123456"and pwd=="itlike": print("登陆成功") login_pane1.hide() main_pane1.show() else: print("错误")
4.最终实现界面之间相互的跳跃
程序
main.py:
from login_pane import loginpane from mainpane import main_pane from PyQt5.Qt import * if __name__=='__main__': import sys app = QApplication(sys.argv) login_pane1 = loginpane() main_pane1=main_pane() login_pane1.show() main_pane1.hide() def check_login(account,pwd): if account=="123456"and pwd=="itlike": print("登陆成功") login_pane1.hide() main_pane1.show() else: print("错误") def emit_main(): login_pane1.show() main_pane1.hide() login_pane1.check_login_signal.connect(check_login) main_pane1.exit_main_signal.connect(emit_main) sys.exit(app.exec_())
login_pane.py:
from PyQt5.Qt import * from resource.login import Ui_Form class loginpane(QWidget,Ui_Form): check_login_signal = pyqtSignal(str, str) # 自制信号 def __init__(self,parent=None,*args,**kwargs): super().__init__(parent, *args, **kwargs) # self.setAttribute(Qt.WA_StyledBackground, True) # 因为是继承QWidget类别,所以设置属性将背景打开 self.setupUi(self) def check_login(self): account=self.edt_username.text() pwd = self.edt_password.text() self.check_login_signal.emit(account, pwd) if __name__=='__main__': import sys app = QApplication(sys.argv) window = loginpane() window.show() sys.exit(app.exec_())
mainpane.py:
from PyQt5.Qt import * from resource.main_pane import Ui_MainWindow class main_pane(QMainWindow,Ui_MainWindow): #注意选择的时mainwindow,所以要换成QMainWindow exit_main_signal = pyqtSignal() def __init__(self,parent=None,*args,**kwargs): super().__init__(parent, *args, **kwargs) # self.setAttribute(Qt.WA_StyledBackground, True) # 因为是继承QWidget类别,所以设置属性将背景打开 self.setupUi(self) def exit_main(self): self.exit_main_signal.emit() if __name__=='__main__': import sys app = QApplication(sys.argv) window1 = main_pane() window1.show() sys.exit(app.exec_())