【问题标题】:Matplotlib + Qt: tight_layout() doesn't work on the first drawMatplotlib + Qt:tight_layout() 在第一次绘制时不起作用
【发布时间】:2013-09-11 18:22:48
【问题描述】:

使用PyQt4matplotlib 我已经连接了一个按钮单击以执行一些计算并呈现一个图形。 tight_layout() 仅在第二次单击该按钮后生效。

当我完成坐标轴设置并将数据放在图表上后,我会调用

fig.tight_layout()
fig.canvas.draw()

我试图假装第二次按下按钮但没有成功:

from PyQt4 import QtGui
QtGui.QApplication.processEvents()
fig.tight_layout()
fig.canvas.draw()
QtGui.QApplication.processEvents()
fig.tight_layout()
fig.canvas.draw()

我的想法是 Qt 表面没有被识别为脏,但是调整窗口大小会重新绘制具有相同松散布局的图表。当我清除轴并重新填充图表时,紧凑的布局确实适用。

如何让tight_layout() 在第一次绘制图表时应用?

【问题讨论】:

  • 附带说明,不要将嵌入与 pyplot 混合使用(我无法从这段代码中判断你是否是,但这可能会搞砸你)
  • 是的,似乎如果 pyplot 完全被导入,绘图会出现在错误的数字上。不过,导致此问题的代码没有对 pyplot 的任何引用。

标签: python qt matplotlib pyqt pyqt4


【解决方案1】:

似乎不需要显式调用drawprocessEvents。相反,我只需要致电canvas.updateGeometry()

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2012-07-09
    • 2016-10-17
    • 2011-02-14
    相关资源
    最近更新 更多