什么是Tkintervariables跟踪方法callback的参数?

Python有Tkintervariables类StringVar()BooleanVar()等类。这些都共享get()set(string)trace(mode, callback) 。 作为trace(mode, callback)的第二个parameter passing的callback函数传递了四个参数self, n, m, x

对于BooleanVar()的例子来说,它们看起来是'', 'PYVAR0', 'w'

第三个参数x似乎是触发跟踪的模式,在我的情况下,variables被改变了。 但是,第一个variables是什么,似乎是一个空string? 第二,如果我不得不猜测,我会说变数的内部名称?

第一个参数是内部variables名称。 在tkinter环境中或多或less都没有用处,但是对于底层的tcl解释器是非常有用的。

如果第一个参数代表一个列表variables(不太可能在tkinter中), 那么第二个参数将是该列表的索引。 如果它是一个缩放variables,第二个参数将是空string。

第三个参数是该操作,如果您正在使用相同的方法来读取,写入和/或删除该variables,则该操作非常有用。 这个参数告诉你哪个操作触发了callback。 对于写操作(设置variables)和“r”进行读取操作(获取variables的值)将是“w”。 如果variables被删除(“u”是“未设置”的缩写),它将是“u”

Tkinter是一个围绕tcl / tk解释器的python包装器。 有关variables追踪的权威性文档可以在这里find: http : //tcl.tk/man/tcl8.5/TclCmd/trace.htm#M14 。 虽然,这只logging内部跟踪如何工作,但tkinter包装器有时会按摩数据。