赞
踩
本文主要介绍Python tkinter 事件方法和事件属性及鼠标事件示例。
tkinter系列文章
Python tkinter (2) —— Button标签
Python tkinter (8) ——Spinbox控件
Python tkinter (10) ——Combobox控件
Python tkinter (11) —— Frame控件
Python tkinter (12) —— Treeview控件
目录
事件 | 描述 |
<Bi-Motion> | 当鼠标左键被按住在小构件且移动鼠标时事件发生 |
<Button-i> | Button-1、Button-2、Button-3 表明左键、中问键和右键,当在小构件上单击鼠标左键时,Tkinter 会自动抓到限标指针的位置,ButtonPressed-i是Button-i的代名词 |
<ButtonRelease-i> | 当释放鼠标左键时事件发生 |
<Double-Button-i> | 当双击鼠标左键时事件发生 |
<Enter> | 当鼠标光标进入小构件时事件发生 |
<Key> | 当单击一个键时事件发生 |
<Leave> | 当鼠标光标离开小构件时事件发生 |
<Return> | 当单击“Enter”键时事件发生,可以将键盘上的任意键(像“A”、“B”、”Up”"Down”、“Left”、“Right”)和一个事件绑定 |
<Shift+A> | 当单击“Shift+A”键时事件发生,可以将Alt、Shift和Control和其他键组合 |
<Triple-Button-i> | 当三次单击鼠标左键时事件发生 |
事件属性 | 描述 |
char | 从键盘输入的和按键事件相关的字符 |
keycode | 从键盘输入的和按键事件相关的键的键代码(即统一码) |
keysym | 从键盘输人的和按键事件相关的键的键符号(即字符) |
num | 按键数字(1、2、3)表明按下的是哪个鼠标键 |
widget | 触发这个事件的小构件对象 |
x和y | 当前鼠标在小构件中以像素为单位的位置 |
xroot和yroot | 当前鼠标相对于屏幕左上角的以像素为单位的位置 |
单击分为左键、中键、右键三种,使用bind绑定<Button-i>来实现。
示例如下:
- import tkinter
-
- tk = tkinter.Tk()
- tk.title('简单示例')
- tk.geometry('300x200+200+20')
-
- def click_fun(event):
- print(event.x, event.y)
-
- button1 = tkinter.Button(tk, text='鼠标左键')
- button1.pack()
- button1.bind('<Button-1>', click_fun)
-
- button2 = tkinter.Button(tk, text='鼠标右键')
- button2.pack()
- button2.bind('<Button-3>', click_fun)
-
- button3 = tkinter.Button(tk, text='鼠标中键')
- button3.pack()
- button3.bind('<Button-2>', click_fun)
- tk.mainloop()
使用bind绑定<Double-Button-i>来实现。
示例如下:
- # <Double-Button-1> 鼠标左键双击
- # <Double-Button-3> 鼠标右键双击
- # <Double-Button-2> 鼠标中键双击
- button4 = tkinter.Button(tk, text='鼠标左键双击')
- button4.pack()
- button4.bind("<Triple-Button-1>", click_fun)
使用bind绑定<Double-Button-i>来实现。
示例如下:
- # <Triple-Button-1> 鼠标左键三击
- # <Double-Button-3> 鼠标右键三击
- # <Double-Button-2> 鼠标中键三击
- button5 = tkinter.Button(tk, text='鼠标左键三击')
- button5.pack()
- button5.bind("<Triple-Button-1>", click_fun)
鼠标移动事件在绑定<Bi-Motion>后,需要鼠标移动到文本上后,按住进行移动触发。
示例如下:
- import tkinter
-
- tk = tkinter.Tk()
- tk.title('简单示例')
- tk.geometry('300x200+200+20')
-
- label1 = tkinter.Label(tk, text='中华儿女多奇志,不爱红装爱武装')
- label1.pack()
-
-
- def mouse_fun(event):
- print(event.x, event.y)
-
- # 鼠标左键
- label1.bind('<B1-Motion>', mouse_fun)
- # 鼠标中键
- label1.bind('<B2-Motion>', mouse_fun)
- # 鼠标右键
- label1.bind('<B3-Motion>', mouse_fun)
-
- tk.mainloop()
对文本控件绑定<ButtonRelease-i>后,使用鼠标相应按键,
在文本上点击或按住然后释放即可触发。
示例如下:
- import tkinter
-
- tk = tkinter.Tk()
- tk.title('简单示例')
- tk.geometry('300x200+200+20')
-
-
- def release_fun(event):
- print(event.x, event.y)
-
- # 释放鼠标左键
- label1 = tkinter.Label(tk, text='莫听穿林打叶声')
- label1.pack()
- label1.bind('<ButtonRelease-1>', release_fun)
-
- # 释放鼠标右键
- label2 = tkinter.Label(tk, text='何妨吟啸且徐行')
- label2.pack()
- label2.bind('<ButtonRelease-3>', release_fun)
-
- # 释放鼠标中键
- label3 = tkinter.Label(tk, text='回首向来萧瑟处,归去,也无风雨也无晴')
- label3.pack()
- label3.bind('<ButtonRelease-2>', release_fun)
-
- tk.mainloop()
绑定<Enter>事件,鼠标光标进入控件时触发。
绑定<Leave>事件,鼠标光标离开控件时触发。
示例如下:
- import tkinter
-
- tk = tkinter.Tk()
- tk.title('简单示例')
- tk.geometry('300x200+200+20')
-
-
- def entry_fun(event):
- print('进入事件')
- print(event.x, event.y)
-
- def leave_fun(event):
- print('离开事件')
- print(event.x, event.y)
-
- # 鼠标光标进入控件时触发
- label1 = tkinter.Label(tk, text='莫听穿林打叶声')
- label1.pack()
- label1.bind('<Enter>', entry_fun)
-
- # 鼠标光标离开控件时触发
- label2 = tkinter.Label(tk, text='何妨吟啸且徐行')
- label2.pack()
- label2.bind('<Leave>', leave_fun)
-
- tk.mainloop()
本文主要介绍Python tkinter 事件方法和事件属性及几种鼠标事件和示例。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。