我的问题是:是否可以跟踪特定对象的变量?例如,我有 5 个属于同一类的对象,我需要检查每个对象中的特定变量是否已更改,并调用更新与该特定对象相对应的 Tk 小部件的特定过程。我有点困惑,因为我知道我们可以向全局变量添加跟踪,但不确定如何跟踪特定对象内的变量,尤其是如果它在写入之前不存在。提前谢谢你,乔治。
我的问题是:是否可以跟踪特定对象的变量?例如,我有 5 个属于同一类的对象,我需要检查每个对象中的特定变量是否已更改,并调用更新与该特定对象相对应的 Tk 小部件的特定过程。我有点困惑,因为我知道我们可以向全局变量添加跟踪,但不确定如何跟踪特定对象内的变量,尤其是如果它在写入之前不存在。提前谢谢你,乔治。
标准方法
varname
(通常不导出,因此通常只能通过使用my
)应该为您提供一些可以使用的东西trace
或 Tk 小部件。请注意,在此特定情况下,您不需要这样做,
varname
因为trace
使用本地规则解析变量名称。但如果您使用vwait
或 Tk 小部件,则需要这样做。一种常见的相关情况是,当您想让跟踪调用对象的(非导出)方法时。在这种情况下,您可以使用类似下面的代码进行跟踪回调:
Tcl 8.7/9.0 有一个
callback
命令可以使其更容易。