python tkinter 实现鼠标按下和弹起事件监测
生活随笔
收集整理的這篇文章主要介紹了
python tkinter 实现鼠标按下和弹起事件监测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、本來準備使用pyhook的,結果python3下存在兼容性問題,鼠標會卡死,勸退!氣憤+1!
2.然后準備使用據說好用的pyhook3或pywinhook,結果安裝出問題,又是什么swig又是什么c++運行庫,成功把我勸退!氣憤+2!
3.最后迫不得已用了一個折衷的方案,還可以檢測鼠標的實時位置:
# -*- coding: UTF-8 -*-from pynput.mouse import Listener from tkinter import * import tkinter as tkglobal btstate global btstate1def on_hover():global btstateprint("mouse over")btstate=1def on_leave():global btstateprint("mouse leave")btstate=0def on_hover1():global btstate1print("mouse over")btstate1=1def on_leave1():global btstate1print("mouse leave")btstate1=0def callback(event):x = event.xy = event.ytextvar= "移動位置-x:{},y:{}".format(x,y)var.set(textvar)def on_click(x, y, button, is_press):global btstateglobal btstate1# print(f"鼠標{button}鍵在({x}, {y})處{'按下' if is_press else '松開'}")if is_press and btstate==1:print("press button1!")elif btstate==1:print("release button1!")if is_press and btstate1==1:print("press button2!")elif btstate1==1:print("release button2!")root = Tk() root.title("tk鼠標按下和彈起事件") root.geometry("400x300")B = tk.Button(root, text ="點我") B.pack() B.bind('<Enter>',lambda event :on_hover()) B.bind('<Leave>',lambda event :on_leave())C = tk.Button(root, text ="點我") C.pack() C.bind('<Enter>',lambda event :on_hover1()) C.bind('<Leave>',lambda event :on_leave1())listener = Listener(on_click=on_click) listener.start()x,y=0,0 var = StringVar() text = "移動位置-x:{},y:{}".format(x,y) var.set(text)lab = Label(root,textvariable=var) lab.pack(anchor=S,side=RIGHT,padx=10,pady=10) root.bind("<Motion>",callback)root.mainloop()好了就這樣,希望對大家有幫助!
總結
以上是生活随笔為你收集整理的python tkinter 实现鼠标按下和弹起事件监测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么产品开发需要做用户体验研究
- 下一篇: python期末复习总结