Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何拍摄PySide窗口小部件的屏幕截图,包括标题栏和边框_Python_Screenshot_Pyside - Fatal编程技术网

Python 如何拍摄PySide窗口小部件的屏幕截图,包括标题栏和边框

Python 如何拍摄PySide窗口小部件的屏幕截图,包括标题栏和边框,python,screenshot,pyside,Python,Screenshot,Pyside,我知道如何在PySide QT中截取小部件的屏幕,但它不包括非客户端区域,例如标题栏和边框 def screenCaptureWidget(widget, filename, fileformat='png'): pixmap = QtGui.QPixmap.grabWidget(widget) pixmap.save(filename, fileformat) 两个问题: 如何包括非客户区 如何获取窗口矩形相对于其工作区(0,0)点的几何图形 我想我找到了这两个问题的答案

我知道如何在PySide QT中截取小部件的屏幕,但它不包括非客户端区域,例如标题栏和边框

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

  • 如何包括非客户区
  • 如何获取窗口矩形相对于其工作区(0,0)点的几何图形

我想我找到了这两个问题的答案,找到了
QWidget.geometry()
和,它们分别给出了客户端和非客户端区域的屏幕坐标(作为QRect)

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)