【问题标题】:Receive gestures in PyQt5 (for Android)在 PyQt5 中接收手势(适用于 Android)
【发布时间】:2021-02-21 16:24:59
【问题描述】:

好的,这个问题之前有人问过 - 但我还没有找到答案..

我正在尝试使用 QLabel 在图像之间向左/向右滑动,但我还没有通过基于 PyQt5 的应用程序接收到任何手势事件。 这是我所拥有的:

class MyViewer(QtWidgets.QLabel):
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.setAttribute(QtCore.Qt.WA_AcceptTouchEvents)  # just gave it a try
        self.grabGesture(QtCore.Qt.SwipeGesture)

    def event(self, event):
        if event.type() == QtCore.QEvent.Gesture:  # <= this won't happen
            print("Hello event!")
        return super().event(event)

我也尝试查找QtWidgets.QGestureEvent,但即使我只是打印出event.type(),我也只能看到看似与任何手势无关的事件(除了一些QToucheEvent 实例)

类似的问题是this onethis onethis one,我什至读过some documentation,但我还没有看到一个可行的例子。只有问题和示例 C++ sn-ps..

我在 Linux 和 Android 上都使用 PyQt5.15.0,但我还没有看到任何手势的痕迹。 我忘了做什么?是否必须以某种方式设置父级?

【问题讨论】:

    标签: python qt pyqt swipe gesture


    【解决方案1】:

    您用多少根手指滑动?根据the Qt forumQt.SwipeGesture 仅在用两个或更多手指滑动时注册,具体取决于平台。一根手指表示为QtGui.QMouseEvent

    如果您一直在使用两个或多个手指,也可能是您没有看到任何事件的原因是因为您没有明确接受它们。 docs 说:

    QGesture 在到达您的小部件时默认被接受。 但是,始终明确地接受或拒绝一个手势是一种很好的做法。一般规则是,如果你接受一个手势,你就是在使用它。如果你忽略它,你就不会对它感兴趣。 忽略一个手势可能意味着它被提供给另一个目标对象,或者它将被取消。 [...] 忽略该手势将意味着该手势将永远不会再提供给您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 2022-12-30
      相关资源
      最近更新 更多