以下按键绑定在 Windows 上运行良好,但在 Mac 上无法执行绑定代码。 Windows、Mac 和 Linux 之间的按键绑定是否不同?
self._kw.keyboard_win.bind("<Shift-KeyPress-Left>", self._on_shift_cursor_left)
self._kw.keyboard_win.bind("<Shift-KeyPress-Right>", self._on_shift_cursor_right)
self._kw.keyboard_win.bind("<Shift-KeyRelease-Left>", self._on_shift_cursor_left)
self._kw.keyboard_win.bind("<Shift-KeyRelease-Right>", self._on_shift_cursor_right)
根据我在类似问题中看到的信息,我尝试了一些替代方案。
例如:
"<Shift_L-KeyPress-Left>"
"<KeyPress-Shift_L-Left>"
这些导致 tk 出现错误。
我可以绑定到
<KeyPress-Shift_L>
或 <KeyPress-Left>
,但我想要“Shift 和 Left”和“Shift 和 Right”的组合。
您需要将每个键分别括在括号中,例如
'<Shift_L><Left>'
这是一个快速示例应用程序
import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
"""docstring"""
def __init__(self) -> None:
super().__init__()
self.geometry('400x400')
self.title('App')
self.bind('<Shift_L><Left>', lambda e: print(e))
self.bind('<Shift_L><Right>', lambda e: print(e))
self.bind('<Shift_L><Up>', lambda e: print(e))
self.bind('<Shift_L><Down>', lambda e: print(e))
if __name__ == '__main__':
app = App()
app.mainloop()