【发布时间】:2019-04-18 09:27:26
【问题描述】:
我知道关于这个主题有很多问题,但经过长时间的研究,我没有找到任何可以解决我的问题的问题。
我正在尝试使用标签(使用 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()
有人有正确的语法吗?
【问题讨论】:
标签: python-3.x tkinter label updates