0
私は自分のパイに接続された小さなディスプレイを持っています。 gpioヘッダーの2つのイベントの間の時間を測定するPythonスクリプトがあります。 私はこの時間を表示したい(この時間を得るためのスクリプトは完全に動作している)。そのために私はtkinter
ウィンドウを作成しました。 この時間を表示するラベルがあります。 私はプログラムがGPIOピンを聞くことを可能にするためにgui関数をスレッド化しました。私が間違っているのは何update threaded tkinter gui
global beattime
beattime['text'] = str(time)
:私はこれらの行を追加しているので
def guiFunc():
gui = Tk()
gui.title("Test")
gui.geometry("500x200")
app = Frame(gui)
app.grid()
beattime = Label(app, text = "test")
beattime.grid()
gui.mainloop()
gui_thread = threading.Thread(target = guiFunc)
gui_thread.start()
while True:
time.sleep(.01)
if (GPIO.input(3)):
time = trigger() #trigger is the function to trigger the 'stopwatch'
global beattime
beattime['text'] = str(time)
while GPIO.input(3): #'wait' for btn to release (is there a better way?)
print "btn_pressed"
だからプログラムは何もしていないのですか?
しかし、私はguiコマンドを呼び出すために別のスレッドを使用すべきではない場合、どうすればよいでしょうか? gui mainloopはすべてをブロックします。 – jukisu
スレッド部分にタイマー部分を書きますが、そこから直接GUI関数を呼び出さないでください。その代わりに、キュー、ソケット、変数などを使用してください。その推奨事項です。 – Dashadower
私は変数に新しい値を書き込むにはどうすればよいのですか?while True: 'ループは実行されません。 – jukisu