2016-12-16 9 views
1

Ich versuche, eine Funktion asynchron aufzurufen, während tkinter für eine GUI verwendet. Ich versuche, einen Druckbefehl auszuführen, der asynchron zur GUI ausgeführt wird, ohne ihn einzufrieren und alle 0,5 Sekunden zu wiederholen. Ich verstehe nicht, wie man das aus den Tutorials macht, die ich mir angeschaut habe und würde gerne Hilfe bekommen. Hier ist der verdichtete Code als ein Beispiel, um das Problem zu erklären, das ich habe. Ich benutze auch Python 2.7, falls das einen Unterschied macht.Python 2.7 asynchrone Funktion mit tkinter

import Tkinter as tk 

class TestClass(tk.Tk): 
    def __init__(self, *args, **kwargs): 
     tk.Tk.__init__(self, *args, **kwargs) 
     self.create_view() 

    def create_view(self): 
     self.labelTitle = tk.Label(self, text="Live Camera Page",) 
     self.labelTitle.pack() 

    def asynchronous_function(self): 
     print("I would like this to repeat every 0.5 seconds ...") 

app = TestClass() 
app.geometry("800x600") 
app.mainloop() 
+0

Schauen Sie in Tkinter '' After'' Methode. – jasonharper

+0

Haben Sie versucht, einen separaten Thread zu erstellen? –

+0

Ich habe versucht, einen separaten Thread zu erstellen, aber ich konnte es nicht innerhalb von tkinter arbeiten. Das ist das Problem, das ich wirklich habe. – ConorYoungs

Antwort

1

Wenn die Funktion nur ausführen möchten ein paar hundert Millisekunden oder weniger dauert zu laufen, können Sie tkinter die after Methode verwenden. Wenn es länger dauert, müssen Sie diese asynchrone Funktion in einen anderen Thread oder in einen anderen Prozess einfügen.

+0

Nun, ich plane mit simplecv alle 0,5 Sekunden ein Bild aufzunehmen und es auf eine Leinwand auf der tkinter GUI zu setzen. – ConorYoungs

+1

Ich werde versuchen, mit der After-Methode und sehen, ob es schnell genug ist zu verwenden und von dort aus gehen. Ich werde den Post mit einer Antwort aktualisieren, sobald es funktioniert. – ConorYoungs