如何使用tkinter

时间:2019-01-18 10:11:44

标签: python tkinter key-bindings

我想创建一个通过按 命令(b = Button(command = a))也将能够接受来自bind命令的调用。问题在于,bind命令发送变量(事件),而命令未发送。我遇到的另一个问题是我不知道如何将功能链接到计算机上的物理按键

我尝试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 键(<Enter>)以查看发生了什么,并且打印了一个错误,因为它想发送func有一个事件,它无法接受。

2 个答案:

答案 0 :(得分:1)

  1. 将按钮绑定到事件没有任何意义。基本上,您想要的是当您按下一个键时,应该调用func()。为此,在此示例中,您需要像在main.bind('r' ,func)中一样将事件绑定到主窗口。
  2. 要使用event,可以将其添加为参数并进行初始化 到None。另请注意,<Enter>意味着鼠标指针输入而不是 Enter 键。要绑定Enter键,您需要使用<Return>

    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()
    

Demo

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

答案 1 :(得分:0)

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

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

成功了。