Tkinter 鼠标绑定的基本应用
鼠标事件的基本应用,这个程序在执行时会建立300×180大小的窗口,当单击鼠标左键时,在Python Shell窗口中会列出单击事件时的坐标。
示例1
from tkinter import *
def callback(event): # 事件处理程序
print("Clicked at",event.x,event.y) # 打印坐标
root = Tk()
root.title("apidemos.com") # 窗口标题
frame = Frame(root,width=300,height=180,bg="yellow")
frame.bind("<Button-1>",callback) # 绑定callback
frame.pack()
root.mainloop()
输出:
下面是Python Shell示范输出界面。
在程序第3行绑定的事件处理程序中必须留意,callback(event)需有参数event,event名称可以自定义,这是因为事件会传递事件对象给此事件处理程序。
示例2
移动鼠标时可以在窗口右下方看到鼠标目前的坐标。
from tkinter import *
def mouseMotion(event): # Mouse移动
x = event.x
y = event.y
textvar = "Current mouse position -> x:{}, y:{}".format(x,y)
var.set(textvar)
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("300x180")
x, y = "###", "###"
var = StringVar()
text = "Current mouse position -> x:{}, y:{}".format(x,y)
var.set(text)
lab = Label(root,textvariable=var,bg="yellow") # 建立标签
lab.pack(anchor=S,side=RIGHT,padx=10,pady=10) # lab.pack(anchor=S,side=RIGHT,padx=10,pady=10)
# root.bind("<Motion>",mouseMotion)
root.bind("<Button-1>",mouseMotion) # 添加事件处理程序 # "<Motion>"
root.bind("<Button-3>",mouseMotion)
# "<B1-Motion>"
root.mainloop()
输出:
示例3
这个程序在执行时,如果鼠标光标进入Exit功能按钮,会在黄色底的标签区域显示“鼠标进入Exit功能按钮”,如果鼠标光标离开Exit功能按钮,会在黄色底的标签区域显示“鼠标离开Exit功能按钮”,如果单击Exit按钮,程序结束。
from tkinter import *
def enter(event): # Enter事件处理程序
x.set("Mouse into Exit function button")
def leave(event): # Leave事件处理程序
x.set("Mouse out of Exit function button")
def myExit(event):
print("Program exit cxq")
root.destroy()
root = Tk()
root.title("apidemos.com") # 窗口标题
root.geometry("900x540")
# btn = Button(root,text="Exit",command=root.destroy)
btn = Button(root,text="Exit")
btn.bind("<Button-1>",myExit)
btn.pack(pady=30)
btn.bind("<Enter>",enter) # 进入绑定enter
btn.bind("<Leave>",leave) # 离开绑定leave
x = StringVar()
x.set("Initial state...")
lab = Label(root,textvariable=x,
bg="yellow",fg="blue",
height=4,width=50,
font="Times 12 bold") # 建立标签
lab.pack(pady=30)
root.mainloop()
输出: