Python,如何阻止 tkinter 变量被垃圾收集?

问题描述 投票:0回答:1

我有一个函数可以创建一个 tkinter 窗口,上面有许多检查按钮小部件。稍后,另一个窗口上的按钮会保存这些检查按钮的状态。执行此操作的函数将传递对检查按钮所在窗口的引用,通过该窗口(通过

.winfo_children()
)它获取对每个检查按钮小部件的引用。

尽管窗口上的所有检查按钮都是相同地创建、设置和

get
的,但每次运行代码时,不同的按钮都会抛出错误:
_tkinter.TclError: can't read "PY_VAR0": no such variable

这让我相信我的一些

BooleanVar()
tkinter 变量正在被垃圾收集,而我仍然需要它们。 如何阻止我的 tkinter 变量被垃圾收集?


这个问题类似,但我更喜欢一个首先停止垃圾收集的解决方案,因为更改我的函数的结构会很困难。

python tkinter garbage-collection
1个回答
0
投票

与任何 Python 对象一样,您需要保留对它们的永久引用。您需要将它们保存为对象的属性,或者需要将它们设为全局变量。

如果您创建多个

Tk
实例,并在一个根窗口中创建一个变量,但尝试在另一个根窗口中使用它,您也可能会遇到此问题。

© www.soinside.com 2019 - 2024. All rights reserved.