您的位置:首页 > 其它

提问:为什么Tkinter的被焦点的Button按钮,鼠标点击和空格键有一样的效果

2016-03-17 02:51 876 查看
引用一段Button例子的代码,

源自:/article/8161699.html

作者:jcodeer
博客:Tkinter教程之Button篇(1)

from Tkinter import *




def cb1():


print 'button1 clicked'


def cb2(event):


print 'button2 clicked'


def cb3():


print 'button3 clicked'




root = Tk()




b1 = Button(root,text = 'Button1',command = cb1)


b2 = Button(root,text = 'Button2')


b2.bind("<Return>",cb2)


b3 = Button(root,text = 'Button3',command = cb3)


b1.pack()


b2.pack()


b3.pack()




b2.focus_set()


root.mainloop()


'''


上例中使用了bind方法,它建立事件与回调函数(响应函数)之间的关系,每当产生<Enter>事件


后,程序便自动的调用cb2,与cb1,cb3不同的是,它本身还带有一个参数----event,这个参数传递


响应事件的信息。


'''



运行上例代码会产生三个按钮,“Button1”,“Button2”,“Button3”,按钮的焦点在“Button2”

鼠标左键/空格键回车键动画效果
Button1button1 clicked无输出
Button2无输出button2 clicked
Button3button3 clicked无输出
空格键和鼠标左键是同等效果吗?查了很多文档都没结果。

如果效果一样,这就很有意思了,我们在b1下加一句代码:b1.bind("<space>",cb2)

b1 = Button(root,text = 'Button1',command = cb1)

b1.bind("<space>",cb2)

我们把b1按钮和空格键<space>绑定,并在空格键被按下的时候调用回调函数cb2

运行后发现:

鼠标左键会输出:

button1 clicked

而空格键按下会输出:

button2 clicked

button1 clicked

函数cb2会被执行后,command的cb1才被执行。

其实想知道的是有没有解除鼠标左键和空格键同样效果的方法。当Button的焦点在Button3的时候,不希望空格键被按下的时候,cb3被执行,而是空格键只能在Button1被焦点的时候才有效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: