【问题标题】:How do I keybind functions to keys in the keyboard with tkinter如何使用 tkinter 将功能键绑定到键盘中的键
【发布时间】:2019-01-18 10:11:44
【问题描述】:

我想制作一个通过按下按钮触发的功能 命令 (b = Button(command = a)) 也将能够接受来自 bind 命令的调用。问题是 bind 命令发送一个变量(事件),而 command 没有。我遇到的另一个问题是我无法弄清楚如何将功能链接到计算机上的物理按键

我已尝试b.bind('a',func) 链接物理键并检查与回车键的绑定

from tkinter import *
def func():
    print("meow")

main = Tk()
bRoll = Button(text = "Hello", command = func)
bRoll.bind('r',func)
bRoll.bind('<Enter>',func)
bRoll.pack()
main.mainloop()

这似乎不起作用,因为它什么也没做,我尝试绑定到 Enter 键 (&lt;Enter&gt;) 以查看发生了什么,它打印了一个错误,因为它想发送一个事件到func 接受不了。

【问题讨论】:

    标签: python tkinter key-bindings


    【解决方案1】:
    1. 将按钮绑定到事件没有任何意义。基本上你想要的是当你按下一个键时,应该调用func()。为此,在本例中,您需要将事件绑定到主窗口,如main.bind('r' ,func)
    2. 要使用event,可以将其添加为参数并初始化 发给None。另请注意,&lt;Enter&gt; 表示鼠标指针 进入 按钮小部件而不是 Enter 键。要绑定回车键,需要使用&lt;Return&gt;

      import tkinter as tk
      
      def func(event=None):
          tk.Label(main, text="Meow").pack()
      
      main = tk.Tk()
      bRoll = tk.Button(text = "Hello", command = func)
      main.bind('r',func)
      bRoll.bind('<Enter>',func)
      bRoll.pack()
      
      main.mainloop()
      

    请注意,在上面的演示中,最初我按下了 R 键。

    【讨论】:

      【解决方案2】:

      我也无法使用鼠标按钮和键盘访问相同的(一个)功能。 我刚刚做了

      entery. bind(("<Return>") ,lambda event:function_name().focus())
      

      它成功了。

      【讨论】:

      • 为什么会有.focus()?你也不需要"&lt;Return&gt;"周围的括号。
      猜你喜欢
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多