pyqt5问题:新窗口立即关闭

2024-10-01 19:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两扇窗户 窗口1>;登录, 窗口2>;我的应用程序

现在当我尝试当用户成功通过身份验证时打开应用程序窗口 但新窗口立即关闭

my login.py:

from mainmof import Ui_MainWindow_login
from send import Ui_MainWindow_send
from PyQt5 import QtCore, QtGui, QtWidgets
from sys import argv ,exit
import mysite
import dialog 

class doLogin(QtCore.QThread):
    my_signal=QtCore.pyqtSignal(str)
    def __init__(self,u,p):
        super(doLogin, self).__init__()
        self.username=u
        self.password=p
    def run(self):
        self.plogin()

    def plogin(self):
        obj=mysite.check_userpass()     # connect to site and check user pass -> class name
        namekarbari= obj.login(self.username,self.password)       # connect to site and check user pass
        if(namekarbari=='0'):      # no internet
            self.my_signal.emit(namekarbari)
        elif(namekarbari=='-1'):       # bad user pass
            self.my_signal.emit(namekarbari)
        else:
            self.my_signal.emit(namekarbari)        # user pass check and vallid

def showDialog(message):
    D=QtWidgets.QDialog()
    uid =dialog.Ui_Dialog(message)
    uid.setupUi(D)
    D.show()
    D.exec_() 
    return True
def showmainsection():            # here is problem
    MainWindow2 = QtWidgets.QMainWindow()
    uis = Ui_MainWindow_send()
    uis.setupUi(MainWindow2)
    MainWindow.hide()
    MainWindow2.show()

def showdialogmeassage(nk):
    str_noNET= "no internet connection"
    str_badInput='user/pass invallid'
    if (nk=='0'):
        showDialog(str_noNET)        # no internet
        ui.btn_login.setEnabled(True)
    elif(nk=='-1'):                 # bad username password
        showDialog(str_badInput)
        ui.btn_login.setEnabled(True)   
    else:
        showDialog(nk)
        ui.btn_login.setEnabled(True) 
        showmainsection()   #####****##### open new window


class login():
    def login(self):
        ui.btn_login.setEnabled(False)
        self.username=ui.le_username.text()
        self.password=ui.le_password.text()
        str_noINPUT='inputs are empty' 
        if(self.username=='' or self.password==''):
            if(showDialog(str_noINPUT)):
                 ui.btn_login.setEnabled(True)   
                 return

        self.thread = doLogin(self.username,self.password)
        self.thread.start()   
        self.thread.my_signal.connect(showdialogmeassage) 


if __name__ == "__main__":
    app1 = QtWidgets.QApplication(argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow_login()
    ui.setupUi(MainWindow)
    obj_login=login()
    ui.btn_login.clicked.connect(obj_login.login)
    MainWindow.show()
    exit(app1.exec_())

pyqt5设计器文件中的我的新窗口。 我的登录窗口pyqt5文件是单独的,我不想更改它。 mysite文件没有图形代码,它只能管理与服务器的通信


Tags: importselfuisignalmydefusernamelogin

热门问题