背景:我正在尝试使用Qt图形视图框架在python中制作一个VR演示,该框架允许定制呈现的gui。我可以选择包装Qt的两个不同的python模块:PyQt5
和{
PyQt5
似乎缺少QGraphicsSceneMouseEvent
的构造函数,该构造函数用于从VR控制器手势创建合成鼠标事件。这个简短的PyQt5程序。。。在
from PyQt5.QtCore import QEvent, QPointF, Qt
from PyQt5.QtGui import QMouseEvent
from PyQt5.QtWidgets import QGraphicsSceneMouseEvent
from PyQt5.QtGui import QOpenGLPaintDevice # No problem for PyQt5
pos = QPointF(20, 20)
event1 = QMouseEvent(QEvent.MouseMove, pos, Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
device = QOpenGLPaintDevice(100, 100)
# Problem: TypeError: PyQt5.QtWidgets.QGraphicsSceneMouseEvent cannot be instantiated or sub-classed
event2 = QGraphicsSceneMouseEvent(QEvent.GraphicsSceneMouseMove)
…导致TypeError: PyQt5.QtWidgets.QGraphicsSceneMouseEvent cannot be instantiated or sub-classed
似乎好消息是,替代Qt绑定PySide2
模块可以毫无怨言地构造QGraphicsSceneMouseEvent
。但是PySide2
缺少QOpenGLPaintDevice类,我需要它来绘制小部件。这个非常相似的程序,它使用PySide2。。。在
结果是ImportError: cannot import name 'QOpenGLPaintDevice'
我不确定是否有人成功地使用过python的Qt图形视图框架。如果没有,我想做第一个。在
在我看来,在PyQt5中没有启用qgraphicscenemouseevent并不是一个bug,而是在PySide2中启用的bug,因为如果您查看the docs就会发现qgraphicscenemouseevent没有公共构造函数。在
如果要在Qt图形框架中模拟鼠标移动,则必须将QMouseEvent发送到QGraphicsView的^{} 。在
在下面的示例中,我演示了如何通过使用QMouseEvent模拟鼠标来移动项目:
总之:
PySide2没有实现QOpenGLPaintDevice类是一个可能的错误。
相关问题 更多 >
编程相关推荐