Обновление от QWidget

у меня была эта проблема много раз.

когда я изменяю некоторые свойства QWidget после widget.show(), виджет не будет обновляться. Большую часть времени, щелчок мыши или когда мышь выходит или входит в виджет, виджет будет обновляться. Однако, если я оставлю мышь, она не будет обновляться сама по себе.

до сих пор мне удавалось справляться с этим, делая:

widget.hide()
widget.show()

но это очень грязное исправление. Есть ли лучший способ сказать python в обновить виджет ?

спасибо.

2 ответов


обновить виджет, вы должны repaint() его, но вызов repaint() напрямую не очень хорошо, поэтому попробуйте:

widget.update()

из документа:

эта функция не вызывает немедленную перекраску; вместо этого она планирует событие paint для обработки, когда Qt вернется в main цикл событий. Это позволяет Qt оптимизировать для большей скорости и меньше фликер, чем звонок repaint() делает.

вызов update () несколько раз обычно результат всего один событию paintevent() вызова.

Qt обычно стирает область виджета перед вызовом paintEvent (). Если атрибут виджета Qt:: WA_OpaquePaintEvent установлен, виджет отвечает за окрашивание всех своих пикселей в непрозрачный цвет.


вы уже пробовали QWidget.update()

эта функция обновляет только видимые части, сохраняя невидимые части нетронутыми.