2012-05-22 37 views
6

Estoy tratando de tomar una captura de pantalla de la ventana de curent usando una secuencia de comandos python en Linux.Captura de pantalla de una ventana usando python

que curently tienen una secuencia de comandos que toma una captura de pantalla de toda la pantalla:

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') 

Pero una les gustaría tener sólo la ventana seleccionada. Sé que el problema proviene de grabWindow. Pero no sé cómo resolverlo.

Respuesta

6

simplemente reemplazar

QApplication.desktop() 

con el widget que desea tomar la captura de pantalla de.

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

Como alternativa, en lugar de

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

también puede utilizar

p = QPixmap.grabWidget(widget) 
Cuestiones relacionadas