刷新 QWidget

Refreshing a QWidget

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

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

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

widget.hide()
widget.show()

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

谢谢。

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

widget.update()

From doc:

This function does not cause an immediate repaint; instead it schedules a paint event for processing when Qt returns to the main event loop. This permits Qt to optimize for more speed and less flicker than a call to repaint() does.

Calling update() several times normally results in just one paintEvent() call.

Qt normally erases the widget's area before the paintEvent() call. If the Qt::WA_OpaquePaintEvent widget attribute is set, the widget is responsible for painting all its pixels with an opaque color.

你试过了吗 QWidget.update()

此函数仅更新可见部分,保持不可见部分不变。