Python笔记之Tkinter(鼠标事件)

一、目标

学习Tkinter制作窗体软件的基础,鼠标相关的事件。

Button-1>  鼠标左键
<Button-2>   鼠标中间键(滚轮)
<Button-3>  鼠标右键
<Double-Button-1>   双击鼠标左键
<Double-Button-3>   双击鼠标右键
<Triple-Button-1>   三击鼠标左键
<Triple-Button-3>   三击鼠标右键
鼠标移动事件
<B1-Motion>   鼠标左键滑动
<B2-Motion>   鼠标滚轮移动
<B3-Motion>   鼠标右键滑动

二、试验平台

windows7 , python3.7

三、鼠标点击事件示例

import tkinter
from tkinter import ttk


def xFunc1(event):
    print(f"鼠标左键点击了一次坐标是:x={event.x}y={event.y}")


win = tkinter.Tk()
win.title("Kahn Software v1")    # #窗口标题
win.geometry("600x500+200+20")   # #窗口位置500后面是字母x
'''
鼠标点击事件
<Button-1>  鼠标左键
<Button-2>   鼠标中间键(滚轮)
<Button-3>  鼠标右键
<Double-Button-1>   双击鼠标左键
<Double-Button-3>   双击鼠标右键
<Triple-Button-1>   三击鼠标左键
<Triple-Button-3>   三击鼠标右键
'''
button1 =tkinter.Button(win, text="leftmouse button")
# button1 =tkinter.Label(win, text="leftmouse button")    # #任何的小空间都可以绑定鼠标事件
button1.bind("<Button-1>", xFunc1)    # #给按钮控件绑定左键单击事件
button1.pack()

win.mainloop()   # #窗口持久化

四、鼠标点击后移动事件

import tkinter
from tkinter import ttk


def xFunc1(event):
    print(f"鼠标左键滑动坐标是:x={event.x},y={event.y}")


win = tkinter.Tk()
win.title("Kahn Software v1")    # #窗口标题
win.geometry("600x500+200+20")   # #窗口位置500后面是字母x
'''
鼠标移动事件
<B1-Motion>   鼠标左键滑动
<B2-Motion>   鼠标滚轮移动
<B3-Motion>   鼠标右键滑动
'''
xLabel = tkinter.Label(win, text="KAHN Hello world")
xLabel.pack()
xLabel.bind("<B1-Motion>", xFunc1)

win.mainloop()   # #窗口持久化

 

六、释放鼠标按键触发

经测试,必须先点到有效区域,同时在有效区域上释放才行
import tkinter
from tkinter import ttk


def xFunc1(event):
    print(f"鼠标左键释放坐标是:x={event.x},y={event.y}")


win = tkinter.Tk()
win.title("Kahn Software v1")    # #窗口标题
win.geometry("600x500+200+20")   # #窗口位置500后面是字母x
'''
鼠标释放事件
<ButtonRelease-1>   鼠标释放左键触发(经测试,必须先点到有效区域,同时在有效区域上释放才行)
<ButtonRelease-2>   释放鼠标滚轮
<ButtonRelease-3>   释放鼠标右键
<Enter>             鼠标进入触发事件,仅一次有效。下次光标需移出有效区域再次进入时才再次触发
<Leave>             鼠标离开触发事件,离开那一刹那触发
'''
xLabel = tkinter.Label(win, text="KAHN Hello world")
xLabel.pack()
xLabel.bind("<ButtonRelease-1>", xFunc1)

win.mainloop()   # #窗口持久化

kahn 2019年5月1日10:44:18

### 回答1: Python Tkinter中的鼠标事件是指用户在GUI界面中使用鼠标进行交互时所触发的事件。常见的鼠标事件包括鼠标单击、双击、移动、拖拽等。在Tkinter中,可以通过绑定鼠标事件来实现对用户的响应。例如,可以通过绑定鼠标单击事件来实现按钮的点击功能,或者通过绑定鼠标移动事件来实现鼠标跟踪功能。 ### 回答2: python tkinter 是一种图形用户界面(GUI)库,它提供了很多的功能和事件处理方法,其中鼠标事件也是其中之一。 首先,需要了解在 tkinter 中的鼠标事件类型: 1. Button-1:左键鼠标事件 2. Button-2:中间键鼠标事件 3. Button-3:右键鼠标事件 4. Double-Button-1:左键双击事件 5. Double-Button-2:中键双击事件 6. Double-Button-3:右键双击事件 7. MouseWheel:滚轮滚动事件 8. Motion:鼠标移动事件 其中最常用的事件是 Button-1(左键鼠标事件)和 Motion(鼠标移动事件),接下来分别介绍如何使用这两个事件。 1、Button-1事件 Button-1事件触发的条件是用户点击鼠标左键,这个事件会返回一个 event 对象。可以通过 bind 方法将该事件与相应的处理函数绑定。 例如: ```python def callback(event): print("clicked at", event.x, event.y) root.bind("<Button-1>", callback) ``` 上面的代码中,当用户在 tkinter 应用程序中点击鼠标左键时,callback 函数会被触发,会在控制台打印出鼠标点击的位置信息。 2、Motion事件 Motion 事件会在鼠标在 tkinter 的画布上移动时触发。可以将该事件与 move 函数绑定,以便在鼠标移动时更新画布上的内容。 例如: ```python def motion(event): x, y = event.x, event.y print('{}, {}'.format(x, y)) root = Tk() root.bind('<Motion>', motion) root.mainloop() ``` 上面的代码中,可以在运行 tkinter 应用程序后,在画布上移动鼠标,可以在控制台中查看鼠标位置动态变化的信息。 总的来说,python tkinter 鼠标事件tkinter 应用程序中非常重要的一个事件类型。掌握鼠标事件的使用方法,可以为开发有交互性的 GUI 提供很大的帮助。 ### 回答3: Python Tkinter 是一个 GUI 库,除了提供基本的 GUI 控件外,还为用户提供了处理鼠标事件的功能。通过这些函数,用户可以为 GUI 程序添加鼠标事件以响应用户的鼠标行为。 Tkinter 在处理鼠标事件时提供了以下三种事件:单击事件、双击事件和拖动事件。 单击事件:只需单击左键即可触发该事件。可以通过绑定 bind() 函数和指定的标识符 <Button-1> 来为该事件添加函数。 例如,下方代码为单击事件添加了处理函数: ```py from tkinter import * def single_click(event): print("click") root = Tk() frame = Frame(root, width=300, height=200) frame.pack() frame.bind("<Button-1>", single_click) root.mainloop() ``` 双击事件:需要在短时间内快速双击鼠标左键才能触发该事件。可以通过绑定 bind() 函数和指定的标识符 <Double-Button-1> 来为该事件添加函数。 例如,下方代码为双击事件添加了处理函数: ```py from tkinter import * def double_click(event): print("double click") root = Tk() frame = Frame(root, width=300, height=200) frame.pack() frame.bind("<Double-Button-1>", double_click) root.mainloop() ``` 拖动事件:在鼠标左键按下的同时移动鼠标可以触发该事件。可以通过绑定 bind() 函数和指定的标识符 <B1-Motion> 来为该事件添加函数。 例如,下方代码为拖动事件添加了处理函数: ```py from tkinter import * def drag(event): print("drag") root = Tk() frame = Frame(root, width=300, height=200) frame.pack() frame.bind("<B1-Motion>", drag) root.mainloop() ``` 无论鼠标事件如何,都可以将它们绑定到任何 GUI 控件(如 Frame、Button、Canvas 等)上,以对这些控件的鼠标事件进行响应。应该根据需要选择正确的函数和指定的标识符,以便为鼠标事件添加相应的处理函数。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值