【问题标题】:Tkinter shortcuts in context menu on WindowsWindows 上下文菜单中的 Tkinter 快捷方式
【发布时间】:2020-08-18 19:32:25
【问题描述】:

我有一个菜单,在tkinter 应用程序中显示为上下文菜单:

rmenu = tk.Menu(None, tearoff=0, takefocus=0)
# add some commands here
rmenu.add_command(label="Copy", copyfunction, accelerator="Shift-C")
rmenu.bind("<Shift-KeyPress-C>", copyfunction)                       # this doesn't work on windows!

我在此上下文菜单中为命令定义了一个快捷方式,然后,当我尝试通过在 windows 上键入 &lt;Shift&gt;+&lt;C&gt; 来运行该命令时,它不起作用。实际上,我会听到哔声。

有没有办法在这种情况下定义快捷方式?

更新:

我什至尝试使用以下方法在程序中生成事件:

rmenu.event_generate("<Shift-KeyPress-C>", when="tail")

但是没有调用函数copyfunction

PS:这适用于 Linux

【问题讨论】:

    标签: python python-3.x windows tkinter contextmenu


    【解决方案1】:

    bindroot 的键盘快捷键。只有带有focus 的东西才会监听键绑定。上下文菜单多久获得一次焦点?通过在root 上使用bind_all,任何有focus 的东西都会触发键绑定。

    root.bind_all("<Shift-C>", copyfunction)
    

    【讨论】:

    • 实际上菜单在创建后立即获得焦点,然后用户可以使用鼠标或使用快捷方式单击它。我试过bind_all,但还是会发出哔哔声!我认为这不是焦点问题。
    • @ThunderPheonix ~ 所以你想在使用快捷方式之前打开菜单吗?
    • 我认为你不能在 Windows 上做到这一点。 'ding' 本质上是在说“当这个菜单打开时我不能这样做”。通常,键盘快捷键的意义在于您不必打开菜单。我想不出有一个程序会要求您在使用键盘快捷键之前打开菜单。
    • 例如 Firefox,您可以使用 Q 快捷方式来检查网页中的元素。您必须先打开菜单,然后才能使用快捷方式。这只是一个例子。
    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多