Ich führe eine Funktion, in der ich ein PyQt-Popup öffnen möchte, das so etwas wie "Warten ..." sagt, das so lange dauert, bis die Funktion beendet ist. Danach möchte ich den Text auf "Complete" ändern, für ein oder zwei Sekunden schlafen und das Popup schließen. Ich habe mehrere Möglichkeiten ausprobiert, aber bisher war das nicht erfolgreich. Es sieht aus wie jedes Mal, wenn ich app.exec_()
rufe die Funktion hält die Funktion, bis ich das Popup schließe. Ich möchte dies außerhalb des Kontexts der Hauptereignisschleife von PyQt tun (Ich habe versucht, diese Ereignisschleife asynchron ohne Erfolg auszuführen). Wenn ich nicht exec_()
rufe, sehe ich das Popup überhaupt nicht. Grundsätzlich möchte ich so etwas:Wie erstellt man ein einfaches PyQt-Popup in der Python-Funktion und schließt es am Ende?
# this is the function that is being run
def run():
create_popup() # show popup
wait_for_some_messages() # do some stuff
close_popup() # close popup
def create_popup():
app = QApplication([])
popup = Popup()
popup.show()
class Popup(QDialog):
super().__init__()
self.label = QLabel(self)
Jede Hilfe wird sehr geschätzt. Vielen Dank!
Gibt es keine Möglichkeit habe ich kann 'Spaß () 'außerhalb des Geltungsbereichs von PyQt genannt? In meiner Anwendung habe ich einen Prozess ausgeführt und ich denke, es ist irgendwie hässlich, all meine Logik in eine PyQt-App zu verschieben, nur damit ich ein Popup bekomme. In Ihrem Beispiel nehmen wir an, dass 'fun()' bereits aufgerufen wird und ich möchte in der ersten Zeile ein Popup erstellen/anzeigen und in der letzten Zeile schließen. Weißt du, ob das möglich ist? – Stefan
@Stefan Überprüfen Sie meine geänderte Antwort, Sie müssen nur den Namen der Funktion übergeben. – eyllanesc
Danke eyllanesc, ich habe endlich mit deiner Lösung gearbeitet. – Stefan