Как обновлять метку Tkinter данными датчика каждые 2 секунды
Я пытаюсь обновить свой ярлык в Tkinter со значением "x" каждый раз, когда "x" меняет значение. Почти как живой счетчик. Это упрощенный цикл, потому что я работаю над Pycharm. В конце концов я хотел бы изменить этот код так, чтобы метка обновлялась значениями датчика температуры, подключенного к моему Raspberry Pi. Пожалуйста, можете ли вы оказать некоторую помощь по этой теме, спасибо:)
from Tkinter import *
import tkFont
import time
# Window
root = Tk()
root.geometry("700x600+550+100")
# Font
font = tkFont.Font(family = 'Halvetica', size = 36, weight = 'bold')
x = 0
def do():
list = [1, 2, 3, 4]
for x in list:
temp = Label(root, text=x, fg="black", heigh=2, width=15, font=font)
temp.pack()
time.sleep(2)
#temp["text"] = x
do()
root.mainloop()
Я ожидал, что программа напечатает 1, затем заменит 1 на 2 и так далее. Я не хочу, чтобы 1,2,3,4 были представлены все вместе.
Когда я выполняю код, он представляет мне цифры от 1 до 4, но он не обновляет его в прямом эфире, и они находятся ниже друг друга, а это не то, что я хочу
1 ответ
В вашем коде 1, 2, 3, 4 представлены в целом, потому что вы создаете новую метку и называете ее temp
для объема do
каждый раз цикл for повторяется. Вместо этого вы должны сделать ярлык и обновить его текст как:
temp = tkinter.Label(...)
for(...):
temp['text'] = "Updated String Here"
Также, если вы используете time.sleep
это заставляет весь ваш графический интерфейс спать, попробуйте использовать after
метод, который доступен для виджетов tkinter, таких как:
root.after(1000, callback_func)
позвоню callback_func
каждый 1000
milisecond.