我正在将tk 8.6与python 3.5配合使用。
我正在编写一个需要同时单击和双击的应用程序,有时双击可能会非常靠近地发生。
tk文档指出,当您同时绑定到单击和双击事件时,第一次单击将生成一个Button-1事件,而第二个单击将生成Double-Button-1事件。这就是我双击一次时看到的。
当我重复双击时,我希望看到以下事件-单,双,单,双。这是我在两次双击之间留出明显的停顿时所看到的。当我一个接一个地重复时,我看到一个,一个,一个,一个,另一个。当我放慢操作速度时,看到一个或另一个的阈值大约是区分两次单击与两次单击的单击间延迟。
看来,tkinter会将快速跟随另一个点击的任何点击视为双击。我本来希望它可以通过双击来确定第一次单击是否合格,如果是,则将“第三次”单击视为一次单击。这种行为意味着,两次双击产生的事件顺序会根据两次间隔间的延迟而变化。
要获得一致的行为,我的解决方法是停止绑定到double,对单打进行计时,并对双击进行自己的延迟阈值设置。我认为这比尝试解释双击是否是“真正的”双击更为干净。
此行为是tkinter中的错误吗?
在这种情况下其他GUI管理器会做什么?
在这种情况下应该怎么办?
/ edit /我刚刚引起了我的注意,tk也支持三重和四重单击。但是,我仍然认为tk的行为出乎意料。如果仅绑定一次单击,则我的“两次双击”(基本上是四次单击)会生成四个单事件。因此,我希望仅绑定到单击和双击,它应该将单击和双击的四元组仅解释为单击,双击,单个,双击。我想我最终的程序文档应该提到我不使用三次或三次点击。但是,嘿,我有解决方法。 // edit /
/ edit2 /我已经绑定了三次和四次点击,以查看会发生什么,并且它会出现更多的错误。我从来没有四次点击四次事件。我确实收到了一系列的单,双,三,双事件。我也有一个单一,双重,三重,三重,而AFAICS的输入时间相同。我会坚持只绑定单打,并按自己的时间安排! // edit2 /