Я пытаюсь открыть второе окно, если кнопка в первом окне нажата, не выполнит - PullRequest
0 голосов
/ 22 февраля 2020

Я запускаю оба windows из основного python файла.

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import *
from functools import partial
from register import register_form
from login import login_form
import sys



def main():
    while not login_form(): 
        if not register_form():
            sys.exit()


    chatapp()# Not Ready.

if __name__ == "__main__":
    main()

Теперь первое окно login_form работает отлично, и когда я нажимаю кнопку, которая делает l oop конец, это работает, и когда я нажимаю кнопку, чтобы заставить l oop продолжить, чтобы он ввел register_form, он тоже работает.

login.py:

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import *
from functools import partial
import sys
registerClick = False

def login(app):
    app.quit()

def register(app):
    global registerClick
    registerClick = True
    app.quit()


def login_form():
    global registerClick
    app = QtWidgets.QApplication([])
    dlg = uic.loadUi("logInForm.ui")
    dlg.usernameLine.setFocus()
    dlg.registerButton.clicked.connect(partial(register,app))
    dlg.logInButton.clicked.connect(partial(login,app))
    dlg.show()
    app.exec()
    if registerClick:
        return False
    else:
        return True

Теперь после он попадает в оператор if в то время как l oop в основном файле, он попадает в регистр, но не выполняет окно и закрывает программу. Он останавливается на строке app.exe c (). После проверки и добавления задержки я увидел, что окно на секунду открывается, не загружается пользовательский интерфейс, сразу же закрывается и завершается программа. Я не уверен, почему.

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import *
from functools import partial

registered = False
loginClick = False


def register_new_account(dlg):
    pass


# Email check
def checkEmail():
    def emailWrong(dlg):
        QMessageBox.information(None,"email not valid","Please enter a valid email address")
        return False

    if '@' in dlg.gmailLine.text():
        gmail = dlg.gmailLine.text().split('@')
        if len(gmail) > 2:
            emailWrong()
        else:
            if '.' in gmail[1]:
                x = gmail[1].split('.')
                if len(x) > 2:
                    emailWrong()
                else:
                    return True
    else:
        emailWrong()

# Password check
def checkPassword(dlg):
    if len(dlg.passwordLine.text()) < 6:
        QMessageBox.information(None,"password not valid","The Password must have at least 6 characters")
        return False
    if len(dlg.passwordLine.text()) > 12:
        QMessageBox.information(None,"password not valid","The Password must have less than 12 characters")
        return False
    if dlg.passwordLine.text() != dlg.confirmLine.text():
        QMessageBox.information(None,"password not valid","The Password does not match")
        return False
    return True

# Checks the register form if its valid
def register_clicked(dlg):
    if not dlg.gmailLine.text() or not dlg.usernameLine.text() or \
       not dlg.passwordLine.text() or not dlg.confirmLine.text():
       QMessageBox.information(None,"Not enough information","please fill all the blank spaces")
    else:
        if checkEmail(dlg):
            if checkPassword(dlg): 
                register_new_account(dlg)
                global registered
                registered = True

def login(app):
    global loginClick
    loginClick = True
    app.quit()



def register_form():
    global registered, loginClick
    app = QtWidgets.QApplication([])
    dlg = uic.loadUi("registerForm.ui")
    dlg.usernameLine.setFocus()
    dlg.registerButton.clicked.connect(partial(register_clicked, dlg))
    dlg.logInButton.clicked.connect(partial(login,app))
    dlg.show()
    app.exec()#Stops here

    if loginClick or registered:
        return True
    else: 
        return False

Как я могу исправить проблему и сделать второе окно открытым и загрузить, а не завершить программу? Я не получаю никакой ошибки, и она не продолжается, пока l oop или что-то просто вылетает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...