pyqt界面跳转出现问题,一共用qtdesigner做了4个界面,写了一个controller来控制,
从主界面A(hello)跳转到界面B(login)和C(operate)时没有问题,但从B(login)跳转到D(serch)的时候就会退出,
显示:进程已结束,退出代码-1073740791 (0xC0000409)
请帮忙看一下是代码哪个地方出了问题。
import sys
from PyQt5 import QtCore, QtWidgets, QtCore
from PyQt5.QtWidgets import *
# 导入 Qt designer 设计的页面
import login
from hello import Ui_MainWindow as Hello_Ui
from login import Ui_MainWindow as Login_Ui
from operate import Ui_MainWindow as Operate_Ui
from serch import Ui_MainWindow as Serch_Ui
# 主窗口
class HelloWindow(QtWidgets.QMainWindow, Hello_Ui):
switch_window1 = QtCore.pyqtSignal() # 跳转信号
switch_window2 = QtCore.pyqtSignal() # 跳转信号
def __init__(self):
super(HelloWindow, self).__init__()
self.setupUi(self)
self.queryButton.clicked.connect(self.goOperate)
self.manageButton.clicked.connect(self.goLogin)
def goLogin(self):
accout = int(self.lineEdit.text())
password = int(self.lineEdit_2.text())
if accout == 1234 and password == 1234:
reply = QMessageBox.about(self, "提示", "密码正确!")
self.switch_window1.emit()
else:
reply4 = QMessageBox.about(self, "提示", "账号或密码错误,请重新输入!")
def goOperate(self):
self.switch_window2.emit()
# 登录窗口
class LoginWindow(QtWidgets.QMainWindow, Login_Ui):
switch_window3 = QtCore.pyqtSignal()
def __init__(self):
super(LoginWindow, self).__init__()
self.setupUi(self)
self.pushButton_4.clicked.connect(self.goSerch)
def goSerch(self):
self.switch_window3.emit()
# 操作窗口
class SerchWindow(QtWidgets.QMainWindow, Serch_Ui):
def __init__(self):
super(SerchWindow, self).__init__()
self.setupUi(self)
class OperateWindow(QtWidgets.QMainWindow, Operate_Ui):
def __init__(self):
super(OperateWindow, self).__init__()
self.setupUi(self)
# 利用一个控制器来控制页面的跳转
class Controller:
def __init__(self):
pass
# 跳转到 hello 窗口
def show_hello(self):
self.hello = HelloWindow()
self.hello.switch_window1.connect(self.show_login)
self.hello.switch_window2.connect(self.show_operate)
self.hello.show()
# 跳转到 login 窗口, 注意关闭原页面
def show_login(self):
self.login = LoginWindow()
self.login.switch_window3.connect(self.show_serch)
self.hello.close()
self.login.show()
# 跳转到 operate 窗口, 注意关闭原页面
def show_operate(self):
self.operate = OperateWindow()
self.hello.close()
self.operate.show()
def show_serch(self):
self.serch = SerchWindow()
self.login.close()
self.serch.show()
def main():
app = QtWidgets.QApplication(sys.argv)
controller = Controller() # 控制器实例
controller.show_hello() # 默认展示的是 hello 页面
sys.exit(app.exec_())
if __name__ == '__main__':
main()