刷新QWidget

Odg*_*Gsf 11 python qt pyqt vtk python-2.7

我一直有很多次这个问题.

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

到目前为止,我设法通过以下方式处理:

widget.hide()
widget.show()
Run Code Online (Sandbox Code Playgroud)

但这是一个非常脏的修复.是否有更好的方法python来刷新小部件?

谢谢.

Che*_*byl 13

要更新小部件,你应该repaint()这样做,但repaint()直接调用不是很好,所以试试:

widget.update()
Run Code Online (Sandbox Code Playgroud)

来自doc:

此功能不会立即重新绘制; 相反,当Qt返回主事件循环时,它会调度一个paint事件进行处理.这允许Qt优化以获得比调用repaint()更快的速度和更少的闪烁.

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

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


Bha*_*waj 6

你已经尝试过了吗 QWidget.update()

此函数仅更新可见部分,不影响不可见部分。