当按下umlaut键时,Python Tkinter触发keyevent

时间:2017-12-18 17:07:44

标签: python unicode tkinter

在尝试将umlaut-key(äöü)绑定到Python 3中的Tkinter窗口时遇到问题。

Tkinter打印输出的错误消息基本上是:

Traceback (most recent call last):
    self.tk.bind("Ä", self.take_white_ippon)
_tkinter.TclError: bad ASCII character 0x84

你可以试试这个MCVE:

from tkinter import *
tk = Tk()
def doSomething(e=None):
    print("doSomething()")
# The next line is basically ignored
tk.bind("ä", doSomething)
# This line will throw the error message
tk.bind("<ä>", doSomething)
tk.mainloop()

您可以尝试 Alt + 0228 输入ä(使用数字键盘)。

我还没有找到关于此主题的任何其他SO / Google网页。我只发现了一些关于Tkinter和非ascii字符的一般问题的问题。

1 个答案:

答案 0 :(得分:2)

这是一个可以帮助您的程序:

import tkinter as tk

root = tk.Tk()
tk.Label(text="you pushed:").pack()
var = tk.StringVar()
tk.Entry(textvariable=var).pack()
root.bind('<Key>', lambda e: var.set(repr(e.keysym)))
root.mainloop()

如果您运行并输入ä,您将看到'adiaeresis',这是您需要绑定的内容:

tk.bind('<adiaeresis>', doSomething)