我正在尝试使用多个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)。
如何在没有空白matplotlib数据的情况下捕获整个窗口?
干杯, 的Pawel