如何获取一个PySide窗口小部件的屏幕截图,包括标题栏和bord

2024-09-30 01:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想出了如何在pysideqt中截取一个小部件,但它不包括非客户区,例如标题栏和边框。在

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

两个问题:

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

Tags: 客户png部件defwidgetfilename边框qtgui
1条回答
网友
1楼 · 发布于 2024-09-30 01:23:27

在找到QWidget.geometry()和{a1}之后,我想我找到了这两个问题的答案,它们分别给出了客户端和非客户端区域的屏幕坐标(作为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)        

相关问题 更多 >

    热门问题