Шутки в сторону.
Я собираюсь написать скрипт в Python 3, который будет строить некоторый график/гистограмму в главном окне (или в QScrollArea) (окно ранее создано в Qt Designer 5 и конверитруется в *.py). Вероятно, график будет больше, чем размер экрана (например, 2k на 3k пикселей). График генерируется кодом из прогесс-баров, лейблов, горизонтальных и вертикальных линий и т.д. Как можно сохранить снимок этого окна?
Например.
- Пользователь загружает данные из файла и изменяет некоторые настройки.
- Python строит график.
- Пользователь нажимает “сохранить график”.
- Python сохраняет “график.png”.
- Конец.
Для Qt5 предлагают использовать QWidget.grab(), но я не пойму как это написать в коде.
Вот заготовка кода главного окна.
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_())
WGBbody — интерфейс программы, который был создан в дизайнере и затем сконвертирован в .ру и в котором будет происходить генерация графика.