刷新 QWidget
Refreshing a QWidget
这个问题我遇到过很多次了。
当我在 widget.show()
之后修改 QWidget
的某些属性时,小部件不会更新。大多数时候,鼠标单击或鼠标离开或进入小部件时,小部件将被更新。但是,如果我离开鼠标,它不会自己刷新。
到目前为止,我设法通过以下方式解决了这个问题:
widget.hide()
widget.show()
但这是一个非常肮脏的修复。有没有更好的方法告诉 python
刷新小部件?
谢谢。
要更新小部件,您应该repaint()
它,但是直接调用repaint()
不是很好,所以尝试:
widget.update()
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()
此函数仅更新可见部分,保持不可见部分不变。
这个问题我遇到过很多次了。
当我在 widget.show()
之后修改 QWidget
的某些属性时,小部件不会更新。大多数时候,鼠标单击或鼠标离开或进入小部件时,小部件将被更新。但是,如果我离开鼠标,它不会自己刷新。
到目前为止,我设法通过以下方式解决了这个问题:
widget.hide()
widget.show()
但这是一个非常肮脏的修复。有没有更好的方法告诉 python
刷新小部件?
谢谢。
要更新小部件,您应该repaint()
它,但是直接调用repaint()
不是很好,所以尝试:
widget.update()
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()
此函数仅更新可见部分,保持不可见部分不变。