Динамическое изменение значения метки в Tkinter - PullRequest
1 голос
/ 11 июля 2020

Прежде всего, я хочу сказать, что я новичок в python Я пытаюсь получить значение температуры датчика BME280 и отобразить его в виджете ярлыка через tkinter.

Вот мой образец код:

import board
from tkinter import *
import busio
import adafruit_bme280

i2c = busio.I2C(board.SCL, board.SDA)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)

main = Tk()
main.geometry('480x320')
main.configure(background = 'black')
main.title('Temperature Reading')

tempvar = StringVar()
tempvar.set("Temperature: " + str(bme280.temperature) + chr(32) + chr(176) + "C")
templbl = Label(main,
               relief = GROOVE,
               bd = 6,
               padx = 10,
               bg="blue",
               fg="yellow",
               font=('Mistral 14 bold'),
               textvariable = tempvar) 
templbl.pack()

main.mainloop()

Проблема в том, что данные, отображаемые в этикетке, не меняются. Я думаю, что мой код не получает данные о температуре с датчика. Я хочу каждые 30 секунд считывать данные о температуре и отображать их на этикетке. Как я могу обновить отображаемые данные на этикетке при изменении данных датчика?

Заранее благодарим за помощь. Яннис

1 Ответ

1 голос
/ 11 июля 2020

Это ваш обновленный код

import board
from tkinter import *
import busio
import adafruit_bme280

i2c = busio.I2C(board.SCL, board.SDA)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)

main = Tk()
main.geometry('480x320')
main.configure(background = 'black')
main.title('Temperature Reading')

tempvar = StringVar()
templbl = Label(main,
               relief = GROOVE,
               bd = 6,
               padx = 10,
               bg="blue",
               fg="yellow",
               font=('Mistral 14 bold'),
               textvariable = tempvar)
templbl.pack()

def update_temp():
    bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
    tempvar.set("Temperature: " + str(bme280.temperature) + chr(32) + chr(176) + "C")
    main.after(30000, update_temp)

main.after(30000, update_temp)

main.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...