【发布时间】:2019-05-27 04:37:11
【问题描述】:
以下代码生成一个带有单个 Entry 小部件的应用。在 MacOS 上使用来自 Homebrew 的 Python 3.7.3 运行时,在输入框内按向上或向下箭头会插入一个字符 0xF701:
import tkinter as tk
root = tk.Tk()
app = tk.Frame(master=root)
app.pack()
entry = tk.Entry(app)
entry.pack()
app.mainloop()
Anaconda Python 不会发生这种情况,我找不到其他人遇到这个问题。
通过将print 绑定到up 和down 事件,我已经能够看到与这些事件关联的字符确实是0xF700 和0xF701。
entry.bind('<Down>', print)
entry.bind('<Up>', print)
上下按下后输出:
<KeyPress event state=Mod3|Mod4 keysym=Up keycode=8320768 char='\uf700' delta=8320768 x=-5 y=-50>
<KeyPress event state=Mod3|Mod4 keysym=Down keycode=8255233 char='\uf701' delta=8255233 x=-5 y=-50>
Anaconda Python 版本的输出略有不同:
<KeyPress event state=Mod3|Mod4 keysym=Up keycode=8320768 char='\uf700' x=-5 y=-50>
<KeyPress event state=Mod3|Mod4 keysym=Down keycode=8255233 char='\uf701' x=-5 y=-50>
有人知道这个问题的简单解决方案吗?
【问题讨论】:
-
我在自己的 mac 上运行了这个,我遇到了同样的问题,这可能只是 Mac OS 上的 tkinter 的问题。我会想办法解决的。
-
@MatthewG:这与在 anaconda 上与 python 捆绑在一起的 tkinter 包和在 Homebrew 上安装的 python 有关。它们绝对不一样。
标签: python-3.x macos tkinter