0

使用此代码片段,向上和向下键 (u"uf700", u"uf701") 传递到跟踪:

import Tkinter as tk
import ttk

def tracesv(var):
    print var

class foo()
    def __init__(self, parent=None):
        self.win = tk.Toplevel()
        self.svFrame = ttk.Frame(self.win)
        self.svFrame.grid()

        self.sv = tk.StringVar()
        self.sv.trace('w', lambda nm, idx, mode, var=self.sv: tracesv(var))
        self.svEntry = tk.Entry(self.svFrame, textvariable=self.sv)
        self.svEntry.grid()
..... etc.

如果我用 ttk.Entry() 替换 tk.Entry(),向上和向下键不会传递到跟踪。有没有办法使用 ttk.Entry() 来完成这项工作?

4

1 回答 1

0

听起来您在 Mac 上的 Tkinter 中发现了一个错误,因为不应将箭头键传递给变量跟踪。变量跟踪设计为在修改变量时调用。除非向上和向下箭头修改该值,否则它们不应导致跟踪触发。

由于这是一个错误,因此没有很好的方法将错误强加于其他小部件,例如 ttk.Entry 小部件。

如果您正在寻找一种在用户按下向上或向下键时调用函数的方法,那么正确的方法是为这些键添加绑定到小部件。

于 2012-09-24T10:52:52.373 回答