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.

tk.Entry() を ttk.Entry() に置き換えると、上下のキーがトレースに渡されません。これを ttk.Entry() で機能させる方法はありますか?

4

1 に答える 1

0

矢印キーを変数 trace に渡してはならないため、Mac の Tkinter にバグが見つかったようです。変数 trace は、変数が変更されたときに呼び出されるように設計されています。上向き矢印と下向き矢印で値を変更しない限り、トレースが発生することはありません。

これはバグであるため、ttk.Entry ウィジェットなどの他のウィジェットにバグを強制する良い方法はありません。

ユーザーが上キーまたは下キーを押したときに関数を呼び出す方法を探している場合、適切な方法は、それらのキーのバインディングをウィジェットに追加することです。

于 2012-09-24T10:52:52.373 に答える