Как обновлять метку 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.

Другие вопросы по тегам