У меня есть небольшой дисплей, подключенный к моему пи. Теперь у меня есть скрипт Python, который измеряет время между двумя событиями заголовков gpio. Я хочу показать это время (сценарий, чтобы получить это время работает отлично). Для этого я создал окно tkinter
. Там, у меня есть ярлык, который должен отображаться на этот раз. Я выполнил функцию gui, чтобы программа все еще слушала вывод GPIO.обновление threaded tkinter gui
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"
Так что программа ничего не делает, так как я добавил эти строки:
global beattime
beattime['text'] = str(time)
Что я делаю неправильно?
Но если я не должен использовать разные потоки для вызова команд gui, как я должен это делать? Главный гвоздь будет блокировать все. – jukisu
Напишите часть таймера в потоке, но не вызывайте функции gui непосредственно из нее. Вместо этого используйте очередь, сокет, переменную и т. Д. Это просто рекомендация. – Dashadower
Я имею в виду, как я должен написать новое значение для переменной: цикл while while: while не выполняется? – jukisu