我是靠谱客的博主 勤恳豌豆,最近开发中收集的这篇文章主要介绍Python GUI开发之Tkinter基础篇12:事件绑定,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

文章目录

    • 一、前言
    • 二、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:事件绑定所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部