Qt4 中,QtGui.QWidget.paintEvent() 是自动运行?

是哦為 发布于 2016/04/10 19:53
阅读 615
收藏 0

PyQt4 新手,看到一段例程是这样写的:

import sys
from PyQt4 import QtGui, QtCore


class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.text = u'\u041b\u0435\u0432 \u041d\u0438\u043a\u043e\u043b\u0430\
\u0435\u0432\u0438\u0447 \u0422\u043e\u043b\u0441\u0442\u043e\u0439: \n\
\u0410\u043d\u043d\u0430 \u041a\u0430\u0440\u0435\u043d\u0438\u043d\u0430'

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Draw text')
        self.show()

    def paintEvent(self, event): # <------------ 从哪开始调用这个方法的?

        qp = QtGui.QPainter()
        qp.begin(self)
        self.drawText(event, qp)
        qp.end()

    def drawText(self, event, qp):

        qp.setPen(QtGui.QColor(168, 34, 3))
        qp.setFont(QtGui.QFont('Decorative', 10))
        qp.drawText(event.rect(), QtCore.Qt.AlignCenter, self.text)


def main():

    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()


我找不到 paintEvent() 是在哪开始运行的,期望中应该是下面的样子:

... ...
class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

        self.paintEvent()    # <---------------- 在初始化时执行 paintEvent()
... ...




加载中
1
kimtaikee
kimtaikee
这个函数你不用调用,你只负责重写就行了,调用是Qt事件循环的责任。
返回顶部
顶部