什么';使用python pyglet检测双击事件的正确方法是什么?

什么';使用python pyglet检测双击事件的正确方法是什么?,python,events,mouseevent,mouse,pyglet,Python,Events,Mouseevent,Mouse,Pyglet,我已经看过了, 它可以很好地处理常见事件,如单击、拖动和释放鼠标按钮。我想处理双击事件,但这似乎不是那么简单 我是否应该监视鼠标按下和鼠标释放事件,并比较时间间隔和位置以检测双击事件 我不想重新发明轮子是否有使用pyglet检测双击事件的“最佳实践”? 这是迄今为止我所掌握的最好的方法: import time import pyglet class MyDisplay: def __init__(self): self.window = pyglet.window.W

我已经看过了, 它可以很好地处理常见事件,如单击、拖动和释放鼠标按钮。我想处理双击事件,但这似乎不是那么简单

我是否应该监视鼠标按下和鼠标释放事件,并比较时间间隔和位置以检测双击事件

我不想重新发明轮子是否有使用pyglet检测双击事件的“最佳实践”?

这是迄今为止我所掌握的最好的方法:

import time
import pyglet

class MyDisplay:
    def __init__(self):
        self.window = pyglet.window.Window(100, 100)

        @self.window.event
        def on_mouse_release(x, y, button, modifiers):
            self.last_mouse_release = (x, y, button, time.clock())

        @self.window.event
        def on_mouse_press(x, y, button, modifiers):
            if hasattr(self, 'last_mouse_release'):
                if (x, y, button) == self.last_mouse_release[:-1]:
                    """Same place, same button"""
                    if time.clock() - self.last_mouse_release[-1] < 0.2:
                        print "Double-click"
导入时间
导入pyglet
类别MyDisplay:
定义初始化(自):
self.window=pyglet.window.window(100100)
@自我窗口事件
鼠标释放时的def(x、y、按钮、修改器):
self.last_mouse_release=(x,y,button,time.clock())
@自我窗口事件
按鼠标上的def键(x、y、按钮、修改器):
如果hasattr(self,“最后一次鼠标释放”):
如果(x,y,button)=self.last_mouse_release[:-1]:
“”“相同的位置,相同的按钮”“”
如果time.clock()-self.last\u鼠标释放[-1]<0.2:
打印“双击”

查看源代码,pyglet似乎使用来测量单击之间的时间间隔

为了描述我所说的内容,这里是pyglet源代码的一个小摘录:

t = time.time()
if t - self._click_time < 0.25:
    self._click_count += 1
else:
    self._click_count = 1
    self._click_time = time.time()
t=time.time()
如果t-self.\u单击\u时间<0.25:
自身。\单击\计数+=1
其他:
自身。\单击\计数=1
self.\u单击\u time=time.time()
(可以找到函数的完整版本。请注意,在完整版本中,代码用于选择文本。)

源代码还提示使用GUI工具包,以便它可以监视单击事件