Python 如何拍摄PySide窗口小部件的屏幕截图,包括标题栏和边框
我知道如何在PySide QT中截取小部件的屏幕,但它不包括非客户端区域,例如标题栏和边框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)点的几何图形 我想我找到了这两个问题的答案
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)