使用python的窗口截图

2024-09-27 09:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在linux上使用python脚本截图curent窗口。

我现在有一个脚本,它拍摄了整个屏幕的截图:

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。但我不知道怎么解决。


Tags: fromimport脚本datetimedate屏幕linuxsys
3条回答

由于Qt5,grabWindowgrabWidget已过时(请参见Obsolete Members for QPixmap

相反,您可以使用QWidget.grab()

p=widget.grab()

或者,代替

p = QPixmap.grabWindow(widget.winId())

你也可以使用

p = QPixmap.grabWidget(widget)

简单地替换

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_()

相关问题 更多 >

    热门问题