簡體   English   中英

如何在 tkinter window 打開時運行 while 循環?

[英]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

a1a2是隨機生成的數字。)

您可能應該將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM