使用QPainter返回元素句柄

时间:2018-02-21 13:46:03

标签: python qt pyqt pyqt5

我正在开发一个基于cellStats的GUI,我想知道我是否可以获得使用PyQt5类创建的各个元素的句柄。

我的意思是,假设我们有三个使用该类绘制的矩形,并带有以下代码:

QPainter

enter image description here

我想检索每个矩形的一种句柄,例如from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtGui import QPainter, QColor, QBrush import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 350, 100) self.setWindowTitle('Colours') self.show() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.drawRectangles(qp) qp.end() def drawRectangles(self, qp): col = QColor(0, 0, 0) col.setNamedColor('#d4d4d4') qp.setPen(col) qp.setBrush(QColor(200, 0, 0)) qp.drawRect(10, 15, 90, 60) qp.setBrush(QColor(255, 80, 0, 160)) qp.drawRect(130, 15, 90, 60) qp.setBrush(QColor(25, 0, 90, 200)) qp.drawRect(250, 15, 90, 60) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) handle_1handle_2,以便修改其中一个矩阵的属性另一个线程没有绘制其余部分。

handle_3

如果这是不可能的,我想知道我是否可以用Qt创建一种透明的包含(它实际上有一个修改样式表的句柄)并在其中加入handle_3.setColor(...) 。如果是这样,哪个容器是最佳选择?

1 个答案:

答案 0 :(得分:0)

正如@ekumoro所说,paint-event不会创建新的元素,因此更新其中一个矩形而不重新绘制其余的元素是不可能的。

实现这一目标的唯一方法是使用容器。在第二个问题上,我发现最好的问题是QFrame