【问题标题】:Refreshing a QWidget刷新 QWidget
【发布时间】:2015-08-24 01:56:30
【问题描述】:

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

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

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

widget.hide()
widget.show()

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

谢谢。

【问题讨论】:

  • 我在小部件的父级上尝试了 update() 但它没有做任何事情。事实上,我刚刚意识到 update() 只更新小部件而不是它的孩子。在这个小部件上执行和更新()有效!
  • 因此,如果您的问题得到解决,请将一个答案(最适合您的)标记为已接受(也将此问题标记为已解决)

标签: python qt python-2.7 pyqt vtk


【解决方案1】:

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

widget.update()

From doc:

此函数不会导致立即重绘;取而代之的是 当 Qt 返回主程序时,安排一个绘制事件进行处理 事件循环。这允许 Qt 优化以提高速度和减少 比调用 repaint() 闪烁。

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

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

【讨论】:

    【解决方案2】:

    您是否已经尝试过 QWidget.update()

    此功能仅更新可见部分,不影响不可见部分。

    【讨论】:

      猜你喜欢
      • 2015-03-30
      • 2012-10-12
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 2013-11-26
      相关资源
      最近更新 更多