Форум сайта python.su
0
Всем привет! Меня зовут Devilhunter и я новичок!
Шутки в сторону.
Я собираюсь написать скрипт в Python 3, который будет строить некоторый график/гистограмму в главном окне (или в QScrollArea) (окно ранее создано в Qt Designer 5 и конверитруется в *.py). Вероятно, график будет больше, чем размер экрана (например, 2k на 3k пикселей). График генерируется кодом из прогесс-баров, лейблов, горизонтальных и вертикальных линий и т.д. Как можно сохранить снимок этого окна?
Например.
import sys from WGBbody import * from PyQt5 import QtCore, QtGui, QtWidgets class WGBWin(QtWidgets.QMainWindow): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) WGB = WGBWin() WGB.show() sys.exit(app.exec_())
Офлайн
186
> График генерируется кодом из прогесс-баров, лейблов, горизонтальных и вертикальных линий и т.д.
ЭТО КАК?
Офлайн
0
RodegastВ зависимости от количества исходных данных в окно будет размещено определённое число этих элементов. По сути этот график это гистограмма с горизонтальным размещением элементов. Собственно прогресс-бар и будет элементом гистограммы.
> График генерируется кодом из прогесс-баров, лейблов, горизонтальных и вертикальных линий и т.д.ЭТО КАК?
Отредактировано Devilhunter (Окт. 29, 2015 15:47:34)
Офлайн
186
> Собственно прогресс-бар и будет элементом гистограммы.
Не предназначены виджеты для того что-бы из них графики строили. Если нужен график то вручную рисуй его. Если рисовать не хочеш/умееш, то оспользуй http://www.pyqtgraph.org/
Офлайн
0
RodegastХорошо. Это не суть. Скриншот окна все равно нужно сделать. Интересует как пользоваться командой QWidget.grab()
> Собственно прогресс-бар и будет элементом гистограммы. Не предназначены виджеты для того что-бы из них графики строили. Если нужен график то вручную рисуй его. Если рисовать не хочеш/умееш, то оспользуй http://www.pyqtgraph.org/
Офлайн
186
> Скриншот окна все равно нужно сделать.
pix = QtGui.QPixmap(widget.size()) widget.render(pix) pix.save("/home/rodegast/save.png")
Офлайн
0
RodegastСпасибо большое! Это то, что нужно.
> Скриншот окна все равно нужно сделать.
Офлайн