PyQt5中QGraphicsScene获取mousePressEvent事件鼠标位置全都为0.0

发布于 2022-09-07 16:43:05 字数 1009 浏览 9 评论 0

问题描述

PyQt5中,想在QGraphicsScene的mousePressEvent中获取鼠标位置,无论点哪,显示的都是[0.0,0.0]

问题出现的环境背景及自己尝试过哪些方法

网上没找到类似的问题

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

#这是继承QGraphicsScene的自定义类
class CARscene(QtWidgets.QGraphicsScene):
    def __init__(self, parent=None):
        super(CARscene, self).__init__(parent)

    def mousePressEvent(self, QMouseEvent):
        #这行代码是期望显示坐标,奈何永远都是[0.0, 0.0]
        print([QMouseEvent.pos().x(), QMouseEvent.pos().y()])

#这是主窗口的类,继承自QtDesigner设计的界面    
class CDataMingQtUi(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
    super(CDataMingQtUi, self).__init__()
    self.setupUi(self)

    #CARgraphview 是一个QGraphicView的实例
    self.figure = plt.figure()
    self.canvas = FigureCanvas(self.figure)
    self.graph_sence = CARscene()
    self.graph_sence.addWidget(self.canvas)
    self.CARgraphview.setScene(self.graph_sence)
    

你期待的结果是什么?实际看到的错误信息又是什么?

期待显示鼠标单击的坐标
实际显示的确是[0.0, 0.0],无论点哪都是这个值

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岛徒 2022-09-14 16:43:05

改成用scenePos

def mousePressEvent(self, event):
    QGraphicsScene.mousePressEvent(self, event)
    e = event.scenePos()
    print(e)
著墨染雨君画夕 2022-09-14 16:43:05

一,引入QCursor
from PyQt5.Qt import QCursor

二.绑定本类的eventFilter
self.pb_heading.installEventFilter(self)

三,在qevent.pos()处弹窗,即鼠标所在位置
def eventFilter(self, qobject, qevent):

    qtype = qevent.type()
    # ~ print(qtype)
    # ~ if qtype == QEvent.HoverMove:
    if qtype == QEvent.HoverLeave:
        print("HoverLeave")
        return True
    elif qtype == QEvent.HoverEnter:
        print("HoverEnter")
        print(qevent.pos())
        self.on_pb_heading_clicked(qevent.pos())
        return True
    else:
        return False
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文