我正在开发一个基于cellStats
的GUI,我想知道我是否可以获得使用PyQt5
类创建的各个元素的句柄。
我的意思是,假设我们有三个使用该类绘制的矩形,并带有以下代码:
QPainter
我想检索每个矩形的一种句柄,例如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_1
和handle_2
,以便修改其中一个矩阵的属性另一个线程没有绘制其余部分。
handle_3
如果这是不可能的,我想知道我是否可以用Qt创建一种透明的包含(它实际上有一个修改样式表的句柄)并在其中加入handle_3.setColor(...)
。如果是这样,哪个容器是最佳选择?
答案 0 :(得分:0)
正如@ekumoro所说,paint-event不会创建新的元素,因此更新其中一个矩形而不重新绘制其余的元素是不可能的。
实现这一目标的唯一方法是使用容器。在第二个问题上,我发现最好的问题是QFrame
。