2014-09-25 26 views
0

背景: 我有一个正在被许多工程师使用的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格式)?

回答

1

试试这个:

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

这个片段将采取一切是scrollArea内的快照和保存为png图像path/to/文件夹file.png

+0

谢谢,虐待我的代码,并试试看它是否相关。 – Naib 2014-09-25 11:47:21

+0

不幸的是,它只捕获可见部分而不是整个小部件内容。我玩这个虽然,因为这似乎几乎是所需 – Naib 2014-09-29 17:05:14

+0

我解决了它,但虐待接受你的答案,因为它是什么让我下来的像素路线 – Naib 2014-09-30 15:44:38

1

确定解决。

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

关键是抓住滚动中的小部件,因为这可以(虚拟)呈现。然后可以保存最终的像素图。