Python, 如何防止tkinter变量被垃圾回收?
我有一个函数,它会创建一个tkinter窗口,里面有很多复选框(checkbutton)。后来,另一个窗口上的一个按钮会保存这些复选框的状态。这个保存状态的函数会接收一个窗口的引用,通过这个窗口(用 .winfo_children()
)来获取每个复选框的引用。
尽管窗口上的所有复选框都是一样创建、设置和获取的,但每次运行代码时,不同的复选框会报错:_tkinter.TclError: can't read "PY_VAR0": no such variable
。
这让我觉得我的一些 BooleanVar()
tkinter 变量在我还需要它们的时候就被垃圾回收了。我该如何防止我的tkinter变量被垃圾回收呢?
这和这个问题类似,但我更希望能找到一个解决方案,能从一开始就防止垃圾回收,因为改变我函数的结构会很困难。
1 个回答
2
就像任何Python对象一样,你需要保持对它们的永久引用。也就是说,你要么把它们保存为某个对象的属性,要么把它们设为全局变量。
如果你创建了多个