[英]How do I run a while loop in tkinter window while it is open?
我有一個while
循環,我想在 Tkinter window 處於打開狀態時運行,但 Tkinter Z05B8C74CBD976FBF2DEZ4 運行while
甚至沒有打開。
這是一個問題,因為我的while
循環是一個無限循環。
我基本上想創建一個程序,在通過while
循環更新按鈕來選擇先前的選擇后為用戶提供新的選擇,但是每當我使用while
循環時,Tkinter直到我結束循環才會打開window。
root = Tk()
i=0
while i==0:
def choice1():
list1[a1].implement()
list1.remove(list1[a1])
def choice2():
list2[a2].implement()
list2.remove(list2[a2])
button1 = tk.Button(root, text=list1.headline, command=choice1)
button2 = tk.Button(root, text=list2.headline, command =choice2)
root.mainloop()
此外,還會出現錯誤,因為 tkinter 一直執行此循環,直到 list1 或 list2 中沒有任何項目。
我想知道的是是否有辦法在while循環進行時運行 Tkinter window
( a1
和a2
是隨機生成的數字。)
您可能應該將root.mainloop
放在循環中,否則它將永遠不會執行。 如果 mainloop() 不執行,window 將不會保持打開狀態。
而且:你需要調用函數,定義它們是不夠的。 因此,除了在循環中只有def choice1()
和def choice2()
,您還需要在循環中擁有choice1()
和choice2()
,否則它不會執行這些命令。
還有一件事:你需要 pack() 按鈕,所以添加行button1.pack()
和button2.pack()
。 按鈕也需要在循環之前,這意味着你的def choice1()
和def choice2()
也需要在循環之前。 (否則按鈕將永遠不會出現)
mainloop()
是window連續顯示的主要原因。 當while loop
運行時, mainloop()
直到while loop
結束才被執行。 而且因為在您的情況下,while 循環永遠不會結束,所以包含mainloop()
的代碼會一直等待輪到它執行。
為了克服這個問題,您必須將要顯示的所有小部件與while loop
中的mainloop()
一起放在 window 中
像這樣:
import tkinter as tk
root = tk.Tk()
i = 0
while i == 0:
def choice1():
list1[a1].implement()
list1.remove(list1[a1])
def choice2():
list2[a2].implement()
list2.remove(list2[a2])
button1 = tk.Button(root, text=list1.headline, command=choice1)
button2 = tk.Button(root, text=list2.headline, command=choice2)
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.