Скриншот окна с использованием python
Я пытаюсь сделать скриншот окна curent, используя скрипт python в linux.
У меня есть скрипт, который делает скриншот всего экрана:
import sys
from PyQt4.QtGui import QPixmap, QApplication
from datetime import datetime
date = datetime.now()
filename = date.strftime('%Y-%m-%d_%H-%M-%S.jpg')
app = QApplication(sys.argv)
QPixmap.grabWindow(QApplication.desktop().winId()).save(filename, 'jpg')
но a хотел бы иметь только выбранное окно. Я знаю, что проблема исходит от grabWindow. Но я не знаю, как это решить.
3 ответов
просто заменить
QApplication.desktop()
с виджетом, который вы хотите сделать снимок экрана.
import sys
from PyQt4.QtGui import *
from datetime import datetime
date = datetime.now()
filename = date.strftime('%Y-%m-%d_%H-%M-%S.jpg')
app = QApplication(sys.argv)
widget = QWidget()
# set up the QWidget...
widget.setLayout(QVBoxLayout())
label = QLabel()
widget.layout().addWidget(label)
def shoot():
p = QPixmap.grabWindow(widget.winId())
p.save(filename, 'jpg')
label.setPixmap(p) # just for fun :)
print "shot taken"
widget.layout().addWidget(QPushButton('take screenshot', clicked=shoot))
widget.show()
app.exec_()
С Qt5, grabWindow
и grabWidget
устарели (см. устаревшие члены для QPixmap)
вместо этого вы можете использовать QWidget.grab()
p=widget.grab()
вместо
p = QPixmap.grabWindow(widget.winId())
вы также можете использовать
p = QPixmap.grabWidget(widget)