Mac 上用于 Shift 光标键的 Tkinter 键绑定

问题描述 投票:0回答:1

以下按键绑定在 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”的组合。

python-3.x macos tkinter key-bindings arrow-keys
1个回答
0
投票

您需要将每个键分别括在括号中,例如

'<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()
© www.soinside.com 2019 - 2024. All rights reserved.