Python Tkinter变量跟踪方法回调的参数是什么?

Python Tkinter变量跟踪方法回调的参数是什么?,python,tkinter,Python,Tkinter,Python有Tkinter变量类StringVar(),BooleanVar(),等等。这些都共享方法get(),set(string),和跟踪(模式,回调)。callback函数作为第二个参数传递给跟踪(模式,回调)的是四个参数,self,n,m,x 以BooleanVar()为例,它们似乎是''PYVAR0','w' 第三个参数x似乎是触发跟踪的模式,在我的例子中,变量已更改。但是,第一个看起来是空字符串的变量是什么?第二个参数是什么,如果我必须猜的话,我会说变量的内部名称?第一个参数是内

Python有Tkinter变量类
StringVar()
BooleanVar()
,等等。这些都共享方法
get()
set(string)
,和
跟踪(模式,回调)
callback
函数作为第二个参数传递给
跟踪(模式,回调)
的是四个参数,
self,n,m,x

BooleanVar()
为例,它们似乎是
''PYVAR0','w'


第三个参数
x
似乎是触发跟踪的模式,在我的例子中,变量已更改。但是,第一个看起来是空字符串的变量是什么?第二个参数是什么,如果我必须猜的话,我会说变量的内部名称?

第一个参数是内部变量名称。您可以将此名称用作tkinter
getvar
setvar
方法的参数。如果为变量指定名称(例如:
StringVar(name='foo')
),这将是给定的名称,否则它将是tkinter为您生成的名称(例如:
PYVAR0

如果第一个参数表示列表变量(在tkinter中极不可能),第二个参数将是该列表的索引。如果是标量变量,则第二个参数将是空字符串

第三个参数是操作,如果使用相同的方法读取、写入和/或删除变量,则该参数非常有用。此参数告诉您是哪个操作触发了回调。写入操作(设置变量)的值为“w”,读取操作(获取变量值)的值为“r”。如果变量被删除,则为“u”(“u”是“unset”的缩写)


Tkinter是围绕tcl/tk解释器的python包装器。变量跟踪的最终文档可在此处找到:。虽然这只记录了内部跟踪的工作方式,但tkinter包装器有时会对数据进行处理

第一个参数是内部变量名。您可以将此名称用作tkinter
getvar
setvar
方法的参数。如果为变量指定名称(例如:
StringVar(name='foo')
),这将是给定的名称,否则它将是tkinter为您生成的名称(例如:
PYVAR0

如果第一个参数表示列表变量(在tkinter中极不可能),第二个参数将是该列表的索引。如果是标量变量,则第二个参数将是空字符串

第三个参数是操作,如果使用相同的方法读取、写入和/或删除变量,则该参数非常有用。此参数告诉您是哪个操作触发了回调。写入操作(设置变量)的值为“w”,读取操作(获取变量值)的值为“r”。如果变量被删除,则为“u”(“u”是“unset”的缩写)


Tkinter是围绕tcl/tk解释器的python包装器。变量跟踪的最终文档可在此处找到:。虽然这只记录了内部跟踪的工作方式,但tkinter包装器有时会对数据进行处理

第一个参数是变量的名称,但不是“无用的”,因为您可以在声明变量时设置它,例如:

someVar = IntVar(name="Name of someVar")

当您检查跟踪回调中的第一个参数时,它将等于“Name of someVar”。使用名称来区分变量,然后可以绑定同一个处理程序来跟踪对任意数量变量的更改,而无需为每个变量使用单独的处理程序。

第一个参数是变量的名称,但不是“无用的”,因为您可以在声明变量时设置它,例如:

someVar = IntVar(name="Name of someVar")

当您检查跟踪回调中的第一个参数时,它将等于“Name of someVar”。使用名称来区分变量,然后可以绑定同一个处理程序来跟踪对任意数量变量的更改,而无需为每个变量使用单独的处理程序。

如果跟踪回调是类实例中的方法,则第一个参数非常有用。在本例中,第一个参数指向类实例。回调的“作用域”可能会导致第一个参数非常有用。我忘了提到,如果在创建变量时(使用'name'关键字)为变量命名,那么该名称将作为回调的第一个参数传递,而不是作为不太有用的通用tkinter名称。这使您可以更轻松地跨多个变量共享回调函数。和。如果你有动力的话,你可以用这个名字直接访问变量,也许是把变量存储在dict中,尽管我不确定这会给你带来什么麻烦。第一个论点是,它不是无用的。见下文@Keith Caufield的答案。您可以将变量的名称(第一个参数)指定给一个变量,然后可以使用该变量,例如使用get()方法获取值。例如,temp_var=IntVar(name=args[0]),然后可以执行temp_var.get()。无论何时你有时间更新答案,请。Thanks@Francesco:我已经更新了我的答案。谢谢你的评论。如果跟踪回调是类实例中的方法,那么第一个参数非常有用。在本例中,第一个参数指向类实例。回调的“作用域”可能会导致第一个参数非常有用。我忘了提到,如果在创建变量时(使用'name'关键字)为变量命名,那么该名称将作为回调的第一个参数传递,而不是作为不太有用的通用tkinter名称。这使您可以更轻松地跨多个变量共享回调函数。和。如果您有动力,您可以使用该名称直接访问vari