生成滚动区域内所有小部件的图像

时间:2014-09-25 11:24:39

标签: python-3.x pyqt4

背景:   我有一个python程序正在被许多工程师使用。它表示某些被测设备的状态。

我正在使用QScrollArea()来包含一个包含大量信息的QGridLayout。

bit_grid = QtGui.QGridLayout()
...
scroll = QtGui.QScrollArea()
info = QtGui.QWidget()
info.setLayout(bit_grid)
scroll.setWidget(info)

GUI上有很多状态指示器,因此滚动条用于确保GUI适合一个屏幕。

当工程师想要描述一个失败时,他们现在正在做的是采取多个屏幕截图,一个用于ScrollArea的每个新显示区域。然后将它们缝合在一起制作一个大图像。

有没有办法生成可以在ScrollArea中显示的区域的png(或img格式)?

2 个答案:

答案 0 :(得分:1)

试试这个:

pixmap = QtGui.QPixmap.grabWidget(scroll)
pixmap.save('path/to/file.png', None, 100)

此代码段会拍摄scrollArea内的任何内容,并将其作为png图像保存到path/to/ <{1}}

答案 1 :(得分:1)

好的解决了。

    widget = self.scroll.widget()
    pixmap = QtGui.QPixmap(widget.size())
    widget.render(pixmap)
    pixmap.save(filename, 'PNG', 100)

关键是抓住滚动的小部件,然后可以(虚拟地)渲染。然后可以保存得到的像素图。