Я запускаю оба 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 или что-то просто вылетает