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 tk
global btstate
global btstate1
def on_hover():
global btstate
print("mouse over")
btstate=1
def on_leave():
global btstate
print("mouse leave")
btstate=0
def on_hover1():
global btstate1
print("mouse over")
btstate1=1
def on_leave1():
global btstate1
print("mouse leave")
btstate1=0
def callback(event):
x = event.x
y = event.y
textvar= "移动位置-x:{},y:{}".format(x,y)
var.set(textvar)
def on_click(x, y, button, is_press):
global btstate
global 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鼠标按下和d起事件")
root.geometry("400x300")
B = tk.Button(root, text ="点我")
B.pack()
B.bind('',lambda event :on_hover())
B.bind('',lambda event :on_leave())
C = tk.Button(root, text ="点我")
C.pack()
C.bind('',lambda event :on_hover1())
C.bind('',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("",callback)
root.mainloop()
好了就这样,希望对大家有帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)