2014-02-06 1 views
1

PySide QT에서 위젯의 화면 캡처 방법을 알아 냈지만 비 클라이언트 영역은 포함하지 않았습니다. 타이틀 바 및 경계.윈도우 인 PySide 위젯의 스크린 샷을 찍고 제목 표시 줄과 경계선을 포함하는 방법

def screenCaptureWidget(widget, filename, fileformat='png'): 
    pixmap = QtGui.QPixmap.grabWidget(widget) 
    pixmap.save(filename, fileformat) 

두 질문 :

  • 는 어떻게 비 클라이언트 영역을 포함합니까?
  • 클라이언트 영역 (0,0) 점에 상대적인 창 사각형의 형상을 얻으려면 어떻게해야합니까?

답변

1

는 내가 각각 클라이언트와 비 클라이언트 영역 (A QRect)를 화면 좌표를 제공 QWidget.geometry()QWidget.frameGeometry()을 찾은 후, 두 질문에 대한 답을 알아 냈다고 생각합니다.

def getRelativeFrameGeometry(widget): 
    g = widget.geometry() 
    fg = widget.frameGeometry() 
    return fg.translated(-g.left(),-g.top()) 

def screenCaptureWidget(widget, filename, fileformat='png'): 
    rfg = getRelativeFrameGeometry(widget) 
    pixmap = QtGui.QPixmap.grabWindow(widget.winId(), 
             rfg.left(), rfg.top(), 
             rfg.width(), rfg.height()) 
    pixmap.save(filename, fileformat)   
관련 문제