tkinter 如何区分鼠标双击和单击?
tkinter 如何区分鼠标双击和单击?import tkinter as tk
root=tk.Tk()
l=tk.Label(root,text='鼠标按键测试',width=15,height=5)
l.pack()
n=0
def 单击(event):
global n
n+=1
print('单击',n)
d=0
def 双击(event):
global d
d+=1
print('双击',d)
l.bind("<Button-1>",单击)
l.bind("<Double-Button-1>",双击)
root.mainloop()
问题是:在对lable双击鼠标时,总是先触发一次单击,再触发双击事件。
我想要的效果是,双击时只触发 双击事件。如何严格把单双击事件分开? 版本是 python 3.4.3 @小甲鱼 ding~~~~~~~ 坛里无人啊~ 定义函数原来还能用中文,真是涨姿势,,,, cwag2323 发表于 2016-7-7 14:04
定义函数原来还能用中文,真是涨姿势,,,,
不仅函数,其他的如变量,对象、模块等都可以用中文。
>>> 中文 = 99
>>> print(中文)
99 cwag2323 发表于 2016-7-7 14:04
定义函数原来还能用中文,真是涨姿势,,,,
只要是支持unicode的编程工具,都可以用中文表达算法。没什么稀奇的。
中英文只是字符集的区别而已,
此题无解? 7天无人能解~
自己想了个办法
用一个 过滤线程 把多次按键动作分辨出来~
import tkinter as tk
import time
import threadingas thd
ClkCnt=
lock = thd.Lock()
lcClk = thd.local()
def 过滤器线程(clk):
lcClk.clk=clk
slp=time.sleep
tm=time.time
t=tm()
while tm()-t<0.3: #按键间隔
lock.acquire()
if ClkCnt==0 :
lock.release()
return
if max(ClkCnt)> lcClk.clk :
ClkCnt=0
lock.release()
return
lock.release()
slp(0.01)
print('单双叁','击')
ClkCnt=0
return
def 单(event):
if ClkCnt==0 :
ClkCnt=1
thd.Thread(target=过滤器线程,args=(1,)).start()
def 双(event):
if ClkCnt==0 :
ClkCnt=2
thd.Thread(target=过滤器线程,args=(2,)).start()
def 叁(event):
if ClkCnt==0 :
ClkCnt=3
thd.Thread(target=过滤器线程,args=(3,)).start()
##------------------
root=tk.Tk()
l=tk.Label(root,text='鼠标按键测试',width=15,height=5)
l.pack()
l.bind("<Button-1>",单)
l.bind("<Double-Button-1>",双)
l.bind("<Triple-Button-1>",叁)
root.mainloop()
页:
[1]