1 回答
TA贡献1757条经验 获得超8个赞
您需要调整代码以与 GUI 配合使用。您无法在 tkinter GUI 中引入无限循环而不引起各种问题。
Mainloop 应该只被调用一次。
我建议您将所有扫描/保存操作移至一个单独的函数中,您计划使用 tkinterafter方法定期执行该函数。
例如,如果您调用函数,scan您可以使用以下命令将其安排在 1 秒后发生
root.after(1000, scan)
更高级的方法是让扫描代码在单独的线程上运行。
此外,您当前尝试在每次循环 while 循环时创建标签,而不是仅创建和打包它们一次并在执行“扫描”时更新标签的文本。您可以使用 config 方法更新标签的文本,例如
## Create a label
label1 = tk.Label(window,text = "PAKAVIMO OPERACIJA:")
##Pack the label
label1.pack()
## Update the text later
label1.config(text="New Text")
以下是从函数定期更新 tkinter 小部件的示例。
import tkinter as tk
import random
def scanning():
num = random.randint(0,100)
entryTemperature.delete(0, tk.END) #Delete the current contents
entryTemperature.insert(0, f"{num} K") #Add new text
root.after(1000, scanning) #Schedule the function to run again in 1000ms (1 second)
root = tk.Tk()
entryTemperature = tk.Entry(root)
entryTemperature.grid(padx=50,pady=50)
root.after(1000, scanning)
root.mainloop()
添加回答
举报