へのバインドの試みが<Key>
失敗した理由は、おそらくキーストロークの処理後に失敗したためですreturn "break"
。
キーボードの任意のキーに対して独自のバインドを作成できます。たとえば、「e」を変更してやりたいことを行うには、self.entry.bind("<e>", ...)
. 次に、バインディングに必要なものを挿入できます。を行うreturn "break"
と、キーのデフォルトの処理が抑制されます。
辞書にマッピングを設定したい場合は、 にバインドできます"<Key>"
。簡単な例を次に示します。
import Tkinter as tk
class Example(tk.Frame):
map = {"e": "1",
"z": "2",
"v": "3",
# ... and so on
}
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
self.entry = tk.Entry(self, width=20)
self.entry.pack(side="top", fill="x")
self.entry.bind("<Key>", self.keymap)
def keymap(self, event):
if event.char in self.map:
self.entry.insert("insert", self.map[event.char])
return "break"
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(side="top", fill="both", expand=True)
root.mainloop()