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()
添加回答
舉報
