mousePressEvent和paintEvent方法之间的交互

时间:2017-04-17 14:37:26

标签: python pyqt pyqt5

源代码中有两种方法必须在它们之间进行交互。

第一种方法是:

def mousePressEvent(self, event):
    if event.button() == QtCore.Qt.LeftButton:
        event = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, event.pos(), QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier)
        centerX = event.pos().x()
        centerY = event.pos().y()
        QtWidgets.QMainWindow.mousePressEvent(self, event)

第二种方法是:

def paintEvent(self, event):
    painter = QtGui.QPainter(self)
    painter.setPen(QtCore.Qt.red)
    painter.drawEllipse(centerX, centerY, 110, 110)
    QtWidgets.QMainWindow.paintEvent(self, event)

这个程序的意义是:当我在主窗口按鼠标左键时,必须出现一个圆圈。

首先我按下鼠标左键,然后发生 QMouseEvent ,然后出现 QPaintEvent

由此我不知道哪里调用 paintEvent()方法必须位于 mousePressEvent()方法内,因此该程序不起作用。

当我尝试在 mousePressEvent()方法中插入调用 paintEvent()方法时,我收到错误消息。

请告诉我,何时必须在 mousePressEvent()方法中插入调用 paintEvent()方法?

谢谢!

祝你好运!

1 个答案:

答案 0 :(得分:0)

您必须使用check_auth = () =>{ fetch(Urls.check_auth(), { credentials: 'include', method: 'GET' }).then(response => { if(response.ok) return response.json(); }).then(json => { this.setState({Result: json.user_logged_in}); }); } ,此方法会调用update()函数。此外,变量paintEventcenterX必须是类的属性,但更好的选择是使用位置作为输入(centerY)并验证它是否已被使用。< / p>

代码:

self.center
相关问题