成为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
从头开始重绘窗口小部件?