如何将空格键键绑定到tkinter(python)中的某个方法

Posted

技术标签:

【中文标题】如何将空格键键绑定到tkinter(python)中的某个方法【英文标题】:How to bind spacebar key to a certain method in tkinter (python) 【发布时间】:2013-03-23 03:19:12 【问题描述】:

我正在用 python 做一个项目,我做了一个方法来在 tkinter 中绘制一个特定的东西。我想要它,这样每当我按下空格键时,图像就会自行重绘(再次运行该方法,因为我对该方法进行了编码,以便它可以重绘自身)。如果我按下空格键,我将如何将空格键绑定到方法以便程序运行、绘制和重新绘制?

例如,我希望这样每当我按下空格键时,程序就会在画布上的随机位置绘制:

from Tkinter import *
from random import *

root=Tk()
canvas=Canvas(root,width=400,height=300,bg='white')
def draw():
    canvas.delete(ALL)# clear canvas first
    canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red')
draw()
canvas.pack()
root.mainloop()

如何将空格键绑定到方法?

【问题讨论】:

【参考方案1】:

您也可以使用canvas.bind_all("<space>", yourFunction) 这将监听整个应用程序中的事件,而不仅仅是小部件。

【讨论】:

【参考方案2】:
from Tkinter import *
from random import *

root=Tk()
canvas=Canvas(root,width=400,height=300,bg='white')
def draw(event=None):
    canvas.delete(ALL)# clear canvas first
    canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red')
draw()
canvas.pack()

root.bind("<space>", draw)
root.mainloop()

【讨论】:

非常感谢!我查看了其他问题,但找不到与我需要的类似的东西。我想添加 event=None 很重要。 很高兴为您提供帮助。是的,回调函数是由 Tkinter 使用参数调用的,所以它需要传递一些东西。通过将其设置为 None,您可以在第 9 行调用它而不传递任何东西。【参考方案3】:

你可以这样做:

from Tkinter import *
from random import *

root=Tk()
canvas=Canvas(root,width=400,height=300,bg='white')

def draw(event):
    if event.char == ' ':
        canvas.delete(ALL)# clear canvas first
        canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red')

root.bind('<Key>', draw)

canvas.pack()
root.mainloop()

基本上,您将绘图函数绑定到某个***元素到&lt;Key&gt; 绑定,只要按下键盘上的键就会触发该绑定。然后,传入的事件对象有一个char 成员,其中包含一个字符串,表示在键盘上按下的键。

只有当它绑定的对象有焦点时才会触发该事件,这就是我将draw 方法绑定到root 对象的原因,因为它始终是焦点。

【讨论】:

你为什么选择绑定&lt;key&gt;而不是&lt;space&gt;?看起来你正在为自己做更多的工作 @BryanOakley 是的,直到我看到另一个答案之后,我才意识到 &lt;space&gt; 的存在。如果它有用,我会留下我的答案,但我赞成另一个答案。

以上是关于如何将空格键键绑定到tkinter(python)中的某个方法的主要内容,如果未能解决你的问题,请参考以下文章

如何将动作绑定到 python 中的 tkinter 树视图的标题?

如何将输入键绑定到 tkinter 按钮

如何从Tkinter,Python中的Text小部件中移除焦点

如何将回车键绑定到 tkinter 中的函数?

如何将回车键绑定到tkinter中的函数?

tkinter 事件与绑定