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

发布于 2021-11-30 14:16:38 字数 1547 浏览 874 评论 1

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'u041bu0435u0432 u041du0438u043au043eu043bu0430
u0435u0432u0438u0447 u0422u043eu043bu0441u0442u043eu0439: n
u0410u043du043du0430 u041au0430u0440u0435u043du0438u043du0430'

        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()
... ...




如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

平定天下 2021-11-30 22:32:44

这个函数你不用调用,你只负责重写就行了,调用是Qt事件循环的责任。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文