PyQt - Wie erkennt und schließt man die Benutzeroberfläche, wenn sie bereits läuft?

7

Ich starte die Benutzeroberfläche von Maya aus. Wenn die Benutzeroberfläche nicht geschlossen wurde, wird das Ausführen von UI Maya vollständig einfrieren (mit dem Fehler "Ereignisschleife wird bereits ausgeführt")

Durch das manuelle Schließen der Benutzeroberfläche vor dem erneuten Ausführen des Skripts wird verhindert, dass es einfriert. Aber ich denke, das ist nicht wirklich praktisch.

Gibt es eine Möglichkeit festzustellen, ob die Benutzeroberfläche, die ich ausführen möchte, bereits existiert? Und mögliche Gewalt schließt es?

    
Panupat 09.01.2012, 09:21
quelle

2 Antworten

15

Es gibt einige ziemlich einfache C ++ - Lösungen, die hier gegeben sind.

Ich habe einen von ihnen nach PyQt portiert und unten ein Beispielskript zur Verfügung gestellt. Die ursprüngliche C ++ - Lösung wurde in zwei Klassen aufgeteilt, da die Messaging-Funktion möglicherweise nicht benötigt wird.

AKTUALISIEREN :

Das Skript wurde so verbessert, dass es neue Stilsignale verwendet und sowohl mit python2 als auch mit python3 funktioniert.

%Vor%     
ekhumoro 09.01.2012 21:40
quelle
8

Falls jemand eine @ekhumoro Lösung mit python3 ausführen möchte, müssen einige Anpassungen an den String-Operationen vorgenommen werden. Ich teile meine Kopie dort, wo sie funktioniert python 3 .

%Vor%

Beispiel für cli-Aufrufe unter der Annahme, dass Ihr Skriptname "SingleInstanceApp.py" lautet:

%Vor%

(und hier ist Aufruf ohne ersten Parameter, also wird die Nachricht einfach nicht gesendet)

  

python SingleInstanceApp.py

Ich hoffe, dass es jemandem hilft.

    
Marek Lewandowski 29.04.2013 14:28
quelle

Tags und Links