使用matplotlib图将整个PyQt4 QWidget窗口保存到png文件中

时间:2016-03-23 12:36:41

标签: python matplotlib qt4 pyqt4 qpixmap

我正在尝试使用多个matplotlib图捕获并保存到整个QWidget窗口的文件。

我正在将matplotlib轴添加到小部件中,如下所示:

import sys
from PyQt4 import QtGui
from matplotlib import pyplot as plt
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas

app   = QtGui.QApplication(sys.argv)
win   = QtGui.QWidget()
grid  = QtGui.QGridLayout()

fig  = plt.figure()
axs  = fig.add_subplot(111)
axs.plot([1,2,3,4],[5,6,7,8])
canv = FigureCanvas(fig)   
canv.setMaximumHeight(100) 
grid.addWidget(canv, 0, 0)
grid.addWidget(QtGui.QLabel('Label'),1,0)
win.setLayout(grid)
win.show()
win.setFixedSize(150,100)

输出窗口看起来不错(output.png - 来自外部打印屏幕应用程序)。

但是当我尝试通过以下方式将输出窗口捕获到QPixmap对象时:

    sshot = QtGui.QPixmap.grabWidget(ow)
    sshot.save('tmp.png')

tmp.jpg不包含matplotlib图(tmp.png)。

即使我尝试捕获整个桌面:

    sshot = QtGui.QPixmap.grabWindow(app.desktop().winId())
    sshot.save('desktop.png')

matplotlib图是空的(desktop.png)。

Three screen-shots

如何在没有空白matplotlib数据的情况下捕获整个窗口?

干杯, 的Pawel

0 个答案:

没有答案