概述
文章目录
- 一、前言
- 二、Button事件
- 三、Key事件
- 四、Motion事件
- 五、结语
一、前言
对于每个组件来说,可以通过bind()方法将函数或方法绑定到具体的事件上,当被触发的事件满足该组件绑定的事件时,Tkinter就会带着事件描述去调用handler()方法。
简单的说,用户触发的鼠标、键盘等操作都可以看成一个事件,而我们可以将这些事件和组件绑定起来,以达到触发事件时,可以和组件交互的作用。
今天介绍三个事件(鼠标左键Button-1,键盘Key,鼠标运动轨迹Motion),并制作两个简单的小游戏,当有事件被触发时,组件会发生相应的改变。
二、Button事件
代码实现:
from tkinter import *
root = Tk()
def callback(event):
print("点击坐标",event.x,event.y)
frame = Frame(root,width = 300,height = 300) #创建一个Frame
frame.bind("<Button-1>",callback) #将鼠标左键事件与Frame绑定
frame.pack()
mainloop()
运行
可以看到,当鼠标移动到Frame范围内,单击左键,事件触发,坐标被打印出来。
三、Key事件
代码实现:
from tkinter import *
root = Tk()
def callback(event):
print("按键位置:",event.char)
if(event.char == 'x'):
print("按对啦!")
var.set("按对啦!")
else:
print("按错啦,要按x键!")
var.set("按错啦,要按x键")
var = Variable()
var.set("请按下x键")
frame = Frame(root,width = 200,height = 200)
Label(root,textvariable = var,bg = "green").pack()
frame.bind("<Key>",callback)
frame.focus_set()
frame.pack()
mainloop()
运行:
当我们按下x键时,提示按对了,如果按其他键,则会提示我们按错了,需要重新按。
四、Motion事件
代码实现:
from tkinter import *
root = Tk()
def callback(event):
print("鼠标位置:",event.x,event.y)
var.set("鼠标放这里吧~")
location = ('鼠标位置:',event.x,event.y)
var2.set(location)
print(var2.get())
def callback2(event):
print("鼠标位置:",event.x,event.y)
var.set("放稳了,不要划出去了~")
location = ['鼠标位置:',event.x,event.y]
var2.set(location)
print(var2.get())
def callback3(event):
print("鼠标位置:",event.x,event.y)
var.set("鼠标放这里吧~")
var2.set("放其他地方去,我是用来显示坐标的~")
var = Variable()
var2 = StringVar()
var.set("鼠标放这试试")
var2.set("鼠标位置:未知")
frame = Frame(root,width = 300,height = 300,bg = "green")
frame.bind("<Motion>",callback)
frame.pack()
label = Label(root,textvariable = var,bg = "red",width = 42)
label.bind("<Motion>",callback2)
label.pack()
label_location = Label(root,textvariable = var2,bg = "yellow",width = 42)
label_location.bind("<Motion>",callback3)
label_location.pack()
mainloop()
运行:
鼠标放在绿色区域时:
鼠标放在红色区域时:
鼠标放在黄色区域时:
可以看到,当我们将鼠标移动到绿色、红色和黄色区域时,Label标签会给我们不同的显示。
五、结语
1、Button事件一共有几种,其中Button-1是鼠标左键触发,Button-2是鼠标中键,button-3是鼠标右键,button-4滚轮上滚(Linux),button-5滚轮下滚(Linux)。
2、只有当组件获得焦点的时候才能接收键盘事件Key,所以使用focus_set()获得焦点,可以设置Frame的takefocus选项为True,然后使用Tab将焦点转移上来。
3、当需要var.set()一个字符串时,可以将它组成一个元组或者列表,然后set进去。
如您在使用过程中有任何问题,请加QQ群进一步交流。
QQ交流群:906015840 (备注:物联网项目交流)。
获取资料:微信扫描下方二维码,关注公众号:一个物联网项目的前世今生。
静晨出品:静之所想,晨之所计
最后
以上就是勤恳豌豆为你收集整理的Python GUI开发之Tkinter基础篇12:事件绑定的全部内容,希望文章能够帮你解决Python GUI开发之Tkinter基础篇12:事件绑定所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复