首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMouseEvent‘对象没有属性'pos’

QMouseEvent‘对象没有属性'pos’
EN

Stack Overflow用户
提问于 2021-05-12 09:47:52
回答 1查看 459关注 0票数 1

当我试图在屏幕上移动一个标签为PyQT6的图片时,我遇到了一些问题。

我试图将Scrollabel区域中的标签移动到框架中,但得到以下错误:"PyQT6:'QMouseEvent‘object没有属性'pos’“

代码如下:

代码语言:javascript
复制
class DraggableLabel(QLabel):
    def init(self, parent, image):
        super(QLabel, self).init(parent)
        pixmap = QPixmap(image)
        pixmap = pixmap.scaled(120, 120)

        self.setPixmap(pixmap)
        # self.show()

    def mousePressEvent(self, event):
        if event.button() == Qt.MouseButtons.LeftButton:
            # print('Evento: ', event.screenPos())
            self.drag_start_position = event.pos()

    def mouseMoveEvent(self, event):
        if not (event.buttons() & Qt.MouseButtons.LeftButton):
            return
        if (event.pos() - self.drag_startposition).manhattanLength() < QApplication.startDragDistance():
            return

        drag = QDrag(self)
        mimedata = QMimeData()
        mimedata.setText(self.text())
        mimedata.setImageData(self.pixmap().toImage())

        drag.setMimeData(mimedata)
        pixmap = QPixmap(self.size())
        painter = QPainter(pixmap)
        painter.drawPixmap(self.rect(), self.grab())
        painter.end()
        drag.setPixmap(pixmap)
        drag.setHotSpot(event.pos())
        drag.exec(Qt.CopyAction | Qt.MoveAction)

编辑

回溯:

代码语言:javascript
复制
PS C:\Users\doug\Projetos> & C:/Python/python.exe c:/Users/doug/Projetos/main.py
qt.gui.imageio: libpng warning: iCCP: known incorrect sRGB profile
Traceback (most recent call last):
  File "c:\Users\doug_\Projetos\lib\sys_functions.py", line 25, in mousePressEvent
    self.drag_start_position = event.pos()
AttributeError: 'QMouseEvent' object has no attribute 'pos'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-12 12:23:13

Qt6重构了event inputs以适应新技术(有关更多信息,请阅读https://www.qt.io/blog/input-events-in-qt-6 ),因此它引入了新的基类,如QSinglePointEvent,QMouseEvent继承这些基类,这些基类具有返回事件位置(在本例中为鼠标)的position()方法。尽管如此,Qt6的pos()方法是多余的,但为了兼容而进行了维护,但PyQt6似乎已经消除了它,这似乎是一个错误,因为PySide6仍然保持它与Qt6的兼容性。因此,在这种情况下,您应该使用position()而不是pos()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67496362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档