1 回答

TA貢獻2065條經驗 獲得超14個贊
當一排框架中的頂部小部件(框架)被制作 255 次時它會崩潰。我想這與它如何以字節為單位存儲信息有關。
不,這與此無關。我認為您關于程序在數字達到 255時崩潰的斷言可能是錯誤的。很容易創建一個 tkinter 程序,即使這個數字達到數千,它也能繼續工作。如果您查看 tkinter 源代碼,您會發現它只是一個附加到字符串的普通整數。
您似乎誤解了list變量與存儲在其中的小部件之間的關系。清除列表不會破壞列表中的小部件。您必須單獨刪除每一個,或者銷毀它們的父級。在這種情況下,它們的父窗口是根窗口,因此這不是一個可行的解決方案。
如果要銷毀所有幀,請在清除列表之前使用一個小循環:
for frame in list:
frame.destroy()
tkinter 分配給小部件的數字無關緊要。數字是多少并不重要,它可能反映也可能不反映實際存在的小部件數量。這是一個不重要的內部細節。
如果要查看實際存在多少個小部件,可以winfo_children在根窗口上調用。為此,您需要對根窗口的引用。最簡單和最好的方法是在代碼的開頭顯式創建根窗口:
root = Tk()
在腳本結束時,您可以打印出實際存在的所有窗口:
print("all windows:", root.winfo_children())
在您的示例代碼中,它正好顯示了兩個小部件,這是預期的。您創建一個小部件,然后創建第二個小部件,然后刪除第一個小部件,然后創建第三個小部件。
添加回答
舉報