@MrBrainop
Начал изучать html, Python и QT Designer

PyQt5 захват(скриншот) GUI окна?

Привет! Есть программа на PyQt5 как сделать скриншот окна программы?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
sanya84
@sanya84
Фанатик Python 3
import os
import sys
from io import BytesIO
from  PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtWidgets import QLabel, QPushButton, QMessageBox
from PyQt5.QtGui import QPixmap, QImage
import requests

url = """https://3.bp.blogspot.com/-rDqzMGTOAzI/U0Uj\
-HQauwI/AAAAAAAAB1c/4YfKMvqN_wk/s1600/%D0%94%D0%B0%D0\
%B2%D0%B0%D0%B9+%D1%8F+%D0%BF%D0%BE%D0%B8%D1%89%D1%83+\
%D0%B2+Google+%D0%B7%D0%B0+%D1%82%D0%B5%D0%B1%D1%8F.png
"""


# Отловить ошибки в слотах PyQt5
def log_uncaught_exceptions(ex_cls, ex, tb):
    text = '{}: {}:\n'.format(ex_cls.__name__, ex)
    import traceback
    text += ''.join(traceback.format_tb(tb))

    print(text)
    QMessageBox.critical(None, 'Упс( Ошибочка...', text)
    quit()
sys.excepthook = log_uncaught_exceptions


class WindowsApplication(QWidget):
	def __init__(self):
		super().__init__()
		self.setWindowTitle('Супер приложение')
		self.setGeometry(300, 200, 800, 600)
		vbox = QVBoxLayout(self)

		label = QLabel()
		button = QPushButton(text='Сделать снимок приложения')
		button.clicked.connect(self.buttonHandler)

		vbox.addWidget(label)
		vbox.addWidget(button)

		content = requests.get(url).content

		pixmap = QPixmap()
		pixmap.loadFromData(content)

		label.setPixmap(pixmap)
	def buttonHandler(self):
		grab = self.grab()
		grab.save('image.png', 'png')
		os.startfile('image.png')
		print('END')


def main():
    application = QApplication(sys.argv)
    main_window = WindowsApplication()
    main_window.show()
    sys.exit(application.exec_())

if __name__ == '__main__':
    main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы