在QPain上手动绘制

2024-10-03 15:30:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试手动在QPaint上绘制。我知道如果QWidget是paintdevice,那么QPainter必须在paintEvent()方法中操作。而且每次更新小部件时paintEvent()都会被调用。在

我要做的是从文件中获取一个坐标数组,然后根据坐标数组绘制矩形。在

class timeline(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)

        self.createUI()

    def createUI(self):
        self.setGeometry(0, 700, 2000, 100)
        self.setWindowTitle('Colors')
        #self.show()


    def paintEvent(self, event):
        print(event.type())
        qp = QtGui.QPainter()
        qp.begin(self)
        print("error2")
        self.drawRectangles(qp)
        qp.end()

    def drawRectangles(self, qp):

        Y = 700
        for i in range(self.rows):
            randArr = np.random.randint(0, 256, size=(3,1))
            qp.fillRect(QtCore.QRect(self.tldata[i,6], Y, self.tldata[i,7], 5), QtGui.QColor(randArr[0], randArr[1], randArr[2]))

在自我.tldata是我要读入的坐标文件。在

当前,这是彩色矩形的外观(深蓝色)。基本上我想有一个彩色矩形。较大矩形内的每种颜色都代表一个特定的时间范围

{1美元^

编辑1:当我运行我的完整程序时,它继续打印(“error2”)以及调用自绘制矩形(qp)当我移动窗户的时候。但是事件.类型()返回12,这是一个绘制事件。Table of event types

所以我猜主窗口的大小会引起一个绘制事件。什么可能导致这种行为?在

任何帮助都将不胜感激! 谢谢您!在


Tags: 文件selfeventdef绘制事件数组矩形