Я знаю, что есть много вопросов по этому вопросу, но после долгих исследований я не нашел ни одного, который мог бы решить мою проблему.
Я пытаюсь отобразить с меткой (используя tkinter) переменную, полученную из шины I²C. Поэтому переменная обновляется очень регулярно и автоматически. Остальная часть окна должна оставаться доступной для пользователя.
На данный момент единственный способ отобразить метку с обновленной переменной и сохранить остальную часть окна доступной для пользователя - это сделать:
window = tk.Tk()
window.title("Gestionnaire de périphériques")
window.minsize(1024,600)
labelValThermo = tk.Label(a_frame_in_the_main_window,text = "")
labelValThermo.grid(row = 1, column = 1)
while True:
if mcp.get_hot_junction_temperature() != 16.0625:
labelValThermo.configure(text = "Température thermocouple: {} °C".format(mcp.get_hot_junction_temperature()))
window.update()
time.sleep(0.75)
Переменная, полученная из I²C и получившая обновление: mcp.get_hot_junction_temperature
Дело в том, что я знаю, что это не лучший способ принудительного обновления в бесконечном цикле. Это должна быть роль mainloop()
. Я обнаружил, что метод after()
может решить мою проблему, но я не знаю, как его запустить. Я попробовал следующий код, который не работал:
def displayThermoTemp():
if mcp.get_hot_junction_temperature() != 16.0625:
labelValThermo.configure(text = "Température thermocouple: {} °C".format(mcp.get_hot_junction_temperature()))
labelValThermo.after(500,displayThermoTemp)
window = tk.Tk()
labelValThermo = tk.Label(thermoGraphFrame,text = "")
labelValThermo.after(500, displayThermoTemp)
labelValThermo.grid(row = 1, column = 1)
window.mainloop()
У кого-нибудь есть правильный синтаксис?