Ich habe eine einfache Login-Anwendung, die Benutzer zur Eingabe von Benutzername und Passwort auffordert. gibt es 2 Tasten, eine für die Anmeldung und andere für den Abbruch.nicht in der Lage, den QDialog in PyQT mit Esc-Taste sauber zu schließen
in den Steckplatz für die Schaltfläche Abbrechen, ich habe den folgenden Code
self.cancelbutton.clicked.connect(self.closeIt)
def closeIt(self):
self.close()
aber wenn ich die Esc-Taste drücken, oder klicken Sie auf das ‚X‘ in der QDialog, verschwindet das Anwendungsfenster, aber ich tun bekomme die Eingabeaufforderung nicht zurück.
finden Sie den Code für die Hauptfunktion
app = QApplication(sys.argv)
form = x_LoginForm()
form.exec_()
form.close()
sys.exit(app.exec_())
ich nicht in der Lage bin, herauszufinden, was ich falsch mache.
Dank Brendan, Ihre Antwort gab mir eine Vorstellung davon, was ich falsch mache. sys.exit (form.exec_()) sys.exit (app.exec_()) grundsätzlich wartete python auf den Code, um das Formular zu beenden, das ich zuvor instanziiert hatte –
aber das führt zu einer anderen Frage, gibt es eine Möglichkeit, um alle laufenden Threads zu zwingen, geschlossen zu werden. Wenn ich also die Esc-Taste drücke oder auf die Schaltfläche "X" klicke, wird das Programm sauber beendet. –
Haben Sie die Threads mit 'QThreads' erstellt? Sie haben Methoden, um sie zu töten oder zu warten, bis sie fertig sind - '.wait(), .quit(), .terminate()' –