你可以说这是我的计算器程序。我希望用户不仅可以通过鼠标单击按钮来使用它,还可以使用键盘。所以我使用.bind()并且所有这些都工作正常,除了使用shift键的5个绑定,只有前两个(shift- =和shift-8)工作,我没有看到为什么其他的原因三个(shift-6,shift-5和shift-1)不起作用。每次我单击Shift-1或SHift-5或Shift-6时,它实际上什么都不做。
btw这里是包含绑定的代码部分,如果你无法在上面找到它:
# ---------------Key Bindings---------------
root.bind('<Delete>', self.button_clear_press)
root.bind('<Escape>', self.button_off_press)
root.bind('`', self.chargeInvert)
root.bind('=', self.equals)
root.bind('.', self.decimal)
root.bind('9', lambda x: self.numButton_press('9'))
root.bind('8', lambda x: self.numButton_press('8'))
root.bind('7', lambda x: self.numButton_press('7'))
root.bind('6', lambda x: self.numButton_press('6'))
root.bind('5', lambda x: self.numButton_press('5'))
root.bind('4', lambda x: self.numButton_press('4'))
root.bind('3', lambda x: self.numButton_press('3'))
root.bind('2', lambda x: self.numButton_press('2'))
root.bind('1', lambda x: self.numButton_press('1'))
root.bind('0', lambda x: self.numButton_press('0'))
root.bind('+', lambda x: self.mathButton_press('+'))
root.bind('<Shift-=>', lambda x: self.mathButton_press('+'))
root.bind('-', lambda x: self.mathButton_press('-'))
root.bind('*', lambda x: self.mathButton_press('×'))
root.bind('<Shift-8>', lambda x: self.mathButton_press('×'))
root.bind('/', lambda x: self.mathButton_press('÷'))
root.bind('<Shift-6>', lambda x: self.mathButton_press('^'))
root.bind('<Shift-5>', lambda x: self.mathButton_press('%'))
root.bind('<Shift-1>', lambda x: self.mathButton_press('!'))
答案 0 :(得分:1)
<1>
表示mouse left button
,因此<Shift-1>
表示Shift + mouse left button
某些键具有特殊名称 - keysym
- 您必须在代码中使用它们。
即
Shift + 1
是<exclam>
Shift + Keypad 1
为<KP_End>
(但这取决于Num Lock
)您可以使用此代码查看按键时的keysym
import tkinter as tk
def test(event):
print('keysym:', event.keysym)
root = tk.Tk()
root.bind('<Key>', test)
root.mainloop()
您可以在Tcl/Tk - keysym或Tkinter 8.5 reference: a GUI for Python: 54.5. Key names
等网页上找到一些名称