手动绘制QPainter

时间:2018-02-05 12:16:55

标签: python qt pyqt qt5 pyqt5

我正在尝试手动绘制QPainter。我知道如果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]))

self.tldata是我将读到的坐标文件。

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

编辑1:当我运行我的完整程序时,它继续打印(“error2”)以及当我移动窗口时调用self.drawRectangle(qp)。但是,event.type()返回12,这是 Paint 事件。 Table of event types

所以我猜测以某种方式调整主窗口的大小会导致 Paint 事件。什么可能导致这种行为?

任何帮助将不胜感激! 谢谢!

0 个答案:

没有答案