如何在pyside的QWidget中使用update和paintEvent?

时间:2014-06-15 09:50:55

标签: python pyside

成为pyside的新手我仍然无法理解一些GUI概念,甚至意识到体面documentation

我有一个小部件,来自QWidget,我想在函数paintEvent内绘制,这是一个调用绘制小部件的函数(据我所知的文档)。此外,方法update应该用于更新窗口小部件,它调用方法paintEvent(据我所知的文档)。

在下面的代码框架中,我简要概述了我的代码,它应该做两件事:   - 初始化时应绘制小部件   - 如果需要,应通过调用派生类

内的update来重绘窗口小部件
class MyWindow(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.update() # update the widget for the first time

    def paintEvent(self, x):

        self.setGeometry(300, 200, 970, 450)
        self.setWindowTitle("My Window")
        ...
        self.table_model = MyTableModel(...)
        self.view =  QTableView()
        ...
        self.setLayout(layout)

    def do_something(self):
        ....
        self.update()

运行代码时,窗口小部件按预期绘制。但是一旦update内部do_something的调用没有发生任何事情,小部件就不会重新绘制!我也尝试使用方法repaint,但仍未重绘窗口小部件。

如何修复代码以确保通过调用paintEvent从头开始重绘窗口小部件?

0 个答案:

没有答案