刷新QWidget

时间:2015-06-09 09:58:01

标签: python qt python-2.7 pyqt vtk

我很多次都遇到过这个问题。

当我在QWidget之后修改widget.show()的某些属性时,小部件不会更新。大多数情况下,鼠标单击或鼠标离开或进入窗口小部件时,窗口小部件将被更新。但是,如果我离开鼠标,它本身就不会刷新。

到目前为止,我通过以下方式设法解决了这个问题:

widget.hide()
widget.show()

但这是一个非常脏的修复。有没有更好的方法告诉python刷新小部件?

谢谢。

2 个答案:

答案 0 :(得分:8)

要更新小部件,您应repaint(),但直接调用repaint()不是很好,请尝试:

widget.update()

From doc:

  

此功能不会立即重绘;相反   当Qt返回主要时,计划绘制事件以进行处理   事件循环。这允许Qt优化以获得更高的速度和更低的速度   闪烁而不是对repaint()的调用。

     

多次调用update()通常只会导致一次   paintEvent()调用。

     

Qt通常在paintEvent()调用之前擦除小部件的区域。如果   设置了Qt :: WA_OpaquePaintEvent小部件属性,小部件是   负责用不透明的颜色绘制所有像素。

答案 1 :(得分:3)

你有没有尝试过  QWidget.update()

此功能仅更新可见部分,保持不可见部分不变。