【问题标题】:Change a label value dynamically in Tkinter在 Tkinter 中动态更改标签值
【发布时间】:2020-07-12 01:46:50
【问题描述】:

首先我想说我是 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 秒读取一次温度数据并将其显示到标签中。 当传感器的数据发生变化时,如何更新标签中显示的数据?

提前感谢您的帮助。 雅尼斯

【问题讨论】:

  • 你100%确定它的标签吗?值得反复将您的变量打印到控制台以仔细检查您的温度计是否是问题所在。否则你可以使用stringVar
  • 使用after()定期调用tempvar.set(...+str(bme280.temperature)+...)
  • 你能给我和例子说明如何使用 after() 吗?
  • 问题是我不知道如何每隔 x 秒检查一次传感器值。传感器工作正常我在另一个测试中使用打印功能进行了尝试,它在 Shell 上打印数据)。这是我用于测试传感器的代码:

标签: python-3.x tkinter


【解决方案1】:

这是您更新的代码

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()

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多