【问题标题】:Differentiate single click from double click in pyside在pyside中区分单击和双击
【发布时间】:2014-03-17 08:06:20
【问题描述】:

我尝试在 Pyside 中实现How to distinguish between mouseReleaseEvent and mousedoubleClickEvent on QGrapnhicsScene 中描述的方法,但我必须添加一个粗略的标志以防止在双击第二个按钮释放后显示单击。

有没有更好的办法?

import sys
from PySide import QtGui, QtCore

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()
        """an attempt to implement 
        https://stackoverflow.com/questions/18021691/how-to-distinguish-between-mousereleaseevent-and-mousedoubleclickevent-on-qgrapn
        main()
            connect(timer, SIGNAL(timeout()), this, SLOT(singleClick()));
        mouseReleaseEvent()
            timer->start();
        mouseDoubleClickEvent()
            timer->stop();
        singleClick()
            // Do single click behavior
        """
        self.timer = QtCore.QTimer()
        self.timer.setSingleShot(True)
        # had to add a "double_clicked" flag
        self.double_clicked = False
        self.timer.timeout.connect(self.singleClick)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Single click, double click')    
        self.show()

    def mouseReleaseEvent(self, event):
        if not self.double_clicked:
            self.timer.start(200)
        else:
            self.double_clicked = False

    def mouseDoubleClickEvent(self, event):
        self.timer.stop()
        self.double_clicked = True
        print 'double click'

    def singleClick(self):
        print 'singleClick'

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

【问题讨论】:

    标签: python click pyside double-click


    【解决方案1】:

    嗯,正如你所发现的,原来的描述是不完整的。

    它提供了一个解决方案,用于区分双击的第一次单击和单击,而不是第二次双击和单击的单击-点击。

    区分第二次点击最简单的解决方案是使用标志。

    PS:您可以通过使用QtGui.qApp.doubleClickInterval 作为计时器间隔来稍微改进您的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 2017-04-29
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多