# 鼠标事件
# Tkinter支持的鼠标事件如下所列。
#
# <Button-1> - 左键单击
# <Button-2> - 中键单击
# <Button-3> - 右键单击
# <Button-1> - 左键单击
# <B1-Motion> - 左键拖动
# <B2-Motion> - 中键拖动
# <B3-Motion> - 右键拖动
# <ButtonRelease-1> - 左键释放
# <ButtonRelease-2> - 中键释放
# <ButtonRelease-3> - 右键释放
# <Double-Button-1> - 左键双击
# <Double-Button-2> - 中键双击
# <Double-Button-3> - 右键双击
# <Motion> - 移动
# <MouseWheel> - 滚轮
# <Enter> - 进入控件
# <Leave> - 离开控件
# 面向对象使用Tkinter
from tkinter import *
class MyApp(Tk):
"""继承Tk,创建自己的桌面应用程序类"""
def __init__(self):
"""构造函数"""
super().__init__()
self.title('鼠标事件演示程序')
self.geometry('480x200')
self.iconbitmap('s1.ico')
self.info = StringVar()
self.info.set('')
label = Label(self, textvariable=self.info, font=("仿宋", 18))
label.pack(side='top', expand='yes', fill='both')
btn = Button(self, text='确定', bg='#C0C0C0')
btn.pack(side='top', fill='x', padx=5, pady=5)
label.bind('<Enter>', self.on_mouse)
label.bind('<Leave>', self.on_mouse)
label.bind('<Motion>', self.on_mouse)
label.bind('<MouseWheel>', self.on_mouse)
btn.bind('<Button-1>', self.on_mouse)
btn.bind('<Button-2>', self.on_mouse)
btn.bind('<Button-3>', self.on_mouse)
btn.bind('<B1-Motion>', self.on_mouse)
btn.bind('<Double-Button-1>', self.on_mouse)
btn.bind('<Double-Button-3>', self.on_mouse)
def on_mouse(self, evt):
"""响应所有鼠标事件的函数"""
if isinstance(evt.num, int):
self.info.set('事件类型:%s\n键码:%d\n鼠标位置:(%d, %d)\n时间:%d' % (evt.type, evt.num, evt.x, evt.y, evt.time))
else:
self.info.set('事件类型:%s\n鼠标位置:(%d, %d)\n时间:%d' % (evt.type, evt.x, evt.y, evt.time))
if __name__ == '__main__':
app = MyApp()
app.mainloop()
tkinter--鼠标实践
最新推荐文章于 2024-08-15 18:25:12 发布