2012-05-22 8 views
6

का उपयोग कर खिड़की का स्क्रीनशॉट मैं लिनक्स पर एक पायथन लिपि का उपयोग कर इलाज विंडो की स्क्रीनशॉट लेने की कोशिश कर रहा हूं।पायथन

मैं curently एक स्क्रिप्ट जो पूरे स्क्रीन का एक स्क्रीनशॉट ले जाता है:

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

लेकिन एक ही चयनित विंडो करना चाहते हैं। मुझे पता है कि समस्या पकड़ने से आता है विन्डो। लेकिन मुझे नहीं पता कि इसे कैसे हल किया जाए।

उत्तर

6

बस विजेट आप के स्क्रीनशॉट लेना चाहते हैं के साथ

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_() 
0
वैकल्पिक रूप से

, बजाय

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

की आप भी

p = QPixmap.grabWidget(widget) 
3

Qt5 के बाद से, grabWindow और grabWidget अप्रचलित (देखें Obsolete Members for QPixmap)

इसके बजाय हैं, तो आप उपयोग कर सकते हैं का उपयोग कर सकते QWidget.grab()

p=widget.grab()