0
源代碼中有兩種方法必須在它們之間進行交互。mousePressEvent和paintEvent方法之間的交互
第一種方法是:
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內的()方法,因此這個計劃行不通。
當嘗試插入調用的paintEvent()方法的內部mousePressEvent()方法我接收到錯誤消息。
請告訴我,當我必須插入調用內部mousePressEvent()方法的paintEvent()方法?
謝謝!
祝你好運!
謝謝@eyllanesc的答案。 –
你工作我的答案? – eyllanesc
是的,我做到了。我在'mousePressEvent()'方法體內插入了'self.update()'字符串,它是在''if event.button()== QtCore.Qt.LeftButton'字符串之後執行'QMainWindow'更新直接在鼠標左鍵點擊之後。謝謝你,@ eyllanesc。 - –