3

数据输入小部件(如条目、文本、微调器、检查按钮、单选按钮)是否存在值更改类型的事件?通过值更改,我的意思是能够检测小部件的值何时由于键盘输入或剪切/删除/粘贴(和文本编辑_撤消/编辑_重做)活动而发生变化?我在 Tkinter 事件文档 [1] 中没有看到此类事件的描述。

将 Tkinter 变量链接到我想要监视的小部件值并使用这些变量的 .trace_variable('w', ... ) 方法绑定到值更改的正确技术是什么?这似乎是正确的方法,但我在我研究过的 Tkinter 应用程序源代码中没有看到很多 trace_variable() 的使用......这让我对使用这种方法持谨慎态度。

[1] http://infohost.nmt.edu/tcc/help/pubs/tkinter/events.html

4

1 回答 1

1

不同的小部件需要不同的解决方案。例如,复选按钮和单选按钮有一个命令选项,并且通过一个条目小部件,您可以使用内置的验证功能。

对于可以绑定到变量的所有小部件,执行变量跟踪是一种常见的解决方案。文本小部件是一个例外,因为您无法不费吹灰之力就把它与变量关联起来。

在 tcl/tk 世界中,我将所有小部件关联到一个数组(哈希映射/字典的 tcl 名称),然后在数组上放置一个跟踪。不幸的是 tkinter 不直接支持 tcl 数组。但是,支持有点容易被破解。有关更多信息,请参阅我对这个问题的回答:如何在 Tkinter 小部件值更改时运行代码?

于 2010-11-12T14:21:02.750 回答