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())
在您的示例代码中,它正好显示了两个小部件,这是预期的。您创建一个小部件,然后创建第二个小部件,然后删除第一个小部件,然后创建第三个小部件。
添加回答
举报