2016-07-29 6 views
0

Ich verwendete den Interaktiven Editor für Python, und dann "upgegraded" ich zu Pyzo (seit IEP wurde in Pyzo verschmolzen). Eines meiner Programme verwendet tkinter, um eine GUI zu erstellen. Der Code, der verwendet wurde, um gut zu funktionieren: Ich würde die Datei als Skript ausführen, und dann würde ich im Interpreter main aufrufen, wodurch die Anwendung gestartet würde.Wie kann ich Pyzo davon abhalten, Hauptloop zu rufen?

Das Code-Skelett sieht so aus.

def main(): 
    class Application(tk.Frame): 
     def __init__(self, master=None): 
      # a bunch of stuff 
     # several more methods here 

    front=Application() 
    front.mainloop() 
# then I can either call main in the interpreter, or I can add this: 
# the name==main part is to handle some multiprocessing that occurs within the application class 
if __name__=="__main__": 
    main() 

Dies funktionierte wie ein Charme in IEP. In pyzo wird main() jedoch nie gestartet oder vielmehr gestartet, aber die gui erscheint nie und lässt mich nichts tun. Stattdessen erhalte ich folgende Nachricht: Hinweis: Die GUI-Ereignisschleife läuft bereits im Pyro-Kernel. Beachten Sie, dass die Funktion zum Eintritt in die Hauptschleife nicht blockiert.

Diese Nachricht tritt in Pyzo auf, wenn ich den CPython 3 oder PyPy-Interpreter benutze, aber nicht, wenn ich Anaconda 3 benutze (ich brauche tatsächlich PyPy, weil die Arbeit, die ich mache, rechenintensiv ist).

Die andere Alternative ist, Pyzo nicht zu verwenden, aber das macht keinen Spaß.

Antwort

0

Ich habe die Antwort schon vor einer Weile entdeckt, aber ich bin bis jetzt nicht dazu gekommen, die Antwort zu posten. Im Wesentlichen gibt es in Pyzo selbst eine Einstellung, die versucht, GUIs zu erkennen. Wenn Sie diese Einstellung von auto auf none setzen, wurde das Problem behoben.