更新从其他函数创建的 paintEvent 对象的颜色
Updating color of an object created paintEvent from other function
我在 paintEvent
函数中使用 QPainter
创建了一个矩形。以下是我的代码
def paintEvent(self, event):
QWidget.paintEvent(self, event)
painter = QPainter(self)
pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
painter.setPen(QtCore.Qt.red)
painter.setBrush(QtGui.QColor(200, 0, 0))
rect = QRect(1450,325,380,498)
painter.drawRect(rect)
painter.setFont(QtGui.QFont('Consolas', 30))
painter.setPen(QtGui.QColor(0, 0, 0))
painter.drawText(QRect(1450,325,380,498), QtCore.Qt.AlignCenter, str("Welcome"))
如何从其他函数更新矩形和文本内容(矩形内)的颜色?
def updateRectanle(conditon):
if condition:
update_rectangle_color
update_rectangle_text
你不应该直接调用 paintEvent()
因为你已经知道,你应该做的是告诉 GUI 你需要为此重绘我们可以使用方法 repaint()
和 update()
.第一种方法需要同步更新,第二种异步的情况下,我更喜欢第二种。
def __init__(self, foo_params):
super(Foo_class, self).__init__(super_foo_params)
self._text = "Welcome"
self._rect_color = QtGui.QColor(200, 0, 0)
def paintEvent(self, event):
super(Foo_class, self).paintEvent(event)
painter = QPainter(self)
pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
painter.setPen(QtCore.Qt.red)
painter.setBrush(self._rect_color)
rect = QRect(1450,325,380,498)
painter.drawRect(rect)
painter.setFont(QtGui.QFont('Consolas', 30))
painter.setPen(QtGui.QColor(0, 0, 0))
painter.drawText(QRect(1450,325,380,498), QtCore.Qt.AlignCenter, self._text)
def updateRectanle(conditon):
if condition:
self._rect_color = new_color
self._text = new_text
self.update()
我在 paintEvent
函数中使用 QPainter
创建了一个矩形。以下是我的代码
def paintEvent(self, event):
QWidget.paintEvent(self, event)
painter = QPainter(self)
pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
painter.setPen(QtCore.Qt.red)
painter.setBrush(QtGui.QColor(200, 0, 0))
rect = QRect(1450,325,380,498)
painter.drawRect(rect)
painter.setFont(QtGui.QFont('Consolas', 30))
painter.setPen(QtGui.QColor(0, 0, 0))
painter.drawText(QRect(1450,325,380,498), QtCore.Qt.AlignCenter, str("Welcome"))
如何从其他函数更新矩形和文本内容(矩形内)的颜色?
def updateRectanle(conditon):
if condition:
update_rectangle_color
update_rectangle_text
你不应该直接调用 paintEvent()
因为你已经知道,你应该做的是告诉 GUI 你需要为此重绘我们可以使用方法 repaint()
和 update()
.第一种方法需要同步更新,第二种异步的情况下,我更喜欢第二种。
def __init__(self, foo_params):
super(Foo_class, self).__init__(super_foo_params)
self._text = "Welcome"
self._rect_color = QtGui.QColor(200, 0, 0)
def paintEvent(self, event):
super(Foo_class, self).paintEvent(event)
painter = QPainter(self)
pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
painter.setPen(QtCore.Qt.red)
painter.setBrush(self._rect_color)
rect = QRect(1450,325,380,498)
painter.drawRect(rect)
painter.setFont(QtGui.QFont('Consolas', 30))
painter.setPen(QtGui.QColor(0, 0, 0))
painter.drawText(QRect(1450,325,380,498), QtCore.Qt.AlignCenter, self._text)
def updateRectanle(conditon):
if condition:
self._rect_color = new_color
self._text = new_text
self.update()