【问题标题】:Tkinter keybinding for Control-Shift-TabControl-Shift-Tab 的 Tkinter 键绑定
【发布时间】:2014-04-30 00:49:07
【问题描述】:

Control-Shift-Tab 的键绑定是什么?我已经尝试了很多东西,但似乎没有任何效果。我已经知道 tkinter.ttk.Notebook.enable_traversal。

如果您知道激活选项卡的处理程序,那也足够了。

【问题讨论】:

    标签: python-3.x event-handling tkinter key-bindings


    【解决方案1】:

    表示事件的一般格式是: 。 对于键绑定 Ctrl+Shift+Tab,格式为: 'Control-Shift-KeyPress-Tab'。 在这种情况下,事件修饰符将是: 控制- 转移-, 事件类型: 按键, 和活动详情: -标签

    以下代码(在 python 2.7.6 中)应该清楚:

    from Tkinter import *
    
    def key(event=None):
        print 'You pressed Ctrl+Shift+Tab'
    
    root = Tk()
    
    frame = Frame(root, width=100, height=100)
    frame.focus_set()
    frame.bind('<Control-Shift-KeyPress-Tab>', key)
    frame.pack()
    
    root.mainloop()
    

    编辑:以上适用于 Windows 和 Mac。对于 Linux,请使用

    '<Control-ISO_Left_Tab>'.
    

    【讨论】:

    • 你测试过这个吗?我在我的代码中测试了您的代码和相同的代码。在 Xubuntu 14.04、32 位的 Python 3.4 或 Python 2.7 中它对我不起作用(不过,3.4 是我需要的)。添加 KeyPress 没有做任何事情。绑定更高级别的小部件(如 root、Frame 和 Notebook)没有做任何事情。但是,我相信 是首先执行的。但是,那些也不会绑定。绑定常规 效果很好。但是,普通的 不起作用(尽管我不想绑定它)。
    • 我会在 Lubuntu 中尝试一下,看看会不会有什么不同。
    • 我在我的 Mac 上进行了测试,它运行良好。确保在绑定之前执行 .focus_set() 方法。如果小部件没有焦点,它将不会响应绑定。尝试用 bind_all() 替换 bind() 函数,这将允许您在应用程序的所有窗口和小部件中使用相同的绑定。发布一些代码,以便我可以更好地帮助您。
    • 感谢测试。很高兴知道它可以在 Mac 上运行。我正在使用您的代码(因此,无需重新发布),并且重点已在我的代码中设置。我在 Lubuntu 中对其进行了测试。而且,它在那里也不起作用。此外,“”在 Lubuntu 中不起作用。因为 '' 在 Xubuntu 中确实有效,所以我认为这是一个发行版/操作系统特定的问题,制作 Tkinter 的人需要以某种方式编程。我认为你的代码很好,我的也是。它不会产生错误,说明键绑定不存在。所以,我认为这表明它们应该可以工作。
    • 仅供参考...我还在 Windows7 和 python 2.7.5、2.7.6 和 3.3.2 中对其进行了测试。不知道为什么在 Xubuntu 会发生这种情况。干杯,继续!
    猜你喜欢
    • 1970-01-01
    • 2013-03-06
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多