I encountered an issue regarding KeyPress binds in tkinter when switching between Windows and Linux while using a NumPad. Using self.bind("-", function)
works on Windows, however is not triggered on Linux.
With the following code snippet I found out that the events of a keyboard-minus differs from a numpad-minus.
Code:
import tkinter as tk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.bind("<Key>", self.action)
self.count = 0
def action(self, e):
print(e)
self.count += 1
app = App()
app.mainloop()
Output:
NumPad:
<KeyPress event state=Mod2 keysym=KP_Subtract keycode=82 char=‘-‘ x=323 y=-184
KeyBoard:
<KeyPress event state=Mod2 Keysym=minus keycode=61 char=’-‘ x=376 y=-27
Is there a way to make Linux recognize the "-" char in a tkinter bind whether it is from keyboard or NumPad?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…