2014-09-25 5 views
0

ПРЕДПОСЫЛКА: У меня есть программа python, которая используется рядом инженеров. Это указывает на состояние какого-либо испытываемого оборудования.Создайте изображение всех виджетов в scrollarea

Я использую QScrollArea(), чтобы содержать QGridLayout, который содержит много информации.

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

Есть довольно много индикаторов состояния на GUI и как таковой полосы прокрутки используется для обеспечения графического интерфейса пользователя помещается на одном экране.

Когда инженер хочет описать неудачу, то, что они делают сейчас, делает несколько снимков экрана, по одному для каждой новой отображаемой области ScrollArea. Затем они сшиваются вместе, чтобы сделать одно большое изображение.

Есть ли способ создать png (или img-формат) области, которая может отображаться в ScrollArea?

ответ

1

Попробуйте это:

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

Этот фрагмент кода будет сделать снимок все, что внутри ScrollArea и сохранить это как PNG изображение в path/to/ папке file.png

+0

спасибо, не обращайте внимания на мой код и попробуйте, чтобы узнать, подходит ли оно. – Naib

+0

, к сожалению, он захватывает только видимую часть, а не общий контент виджетов. Я поиграю с этим, хотя, похоже, это почти то, что требуется – Naib

+0

Я решил это, но плохо принял ваш ответ, поскольку это то, что прислал мне по схеме pixmap – Naib

1

хорошо решена.

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

Ключ должен был захватить виджет, который находится в списке прокрутки, поскольку это может быть (фактически) визуализировано. Получившаяся pixmap может быть сохранена.

Смежные вопросы