如何制作特定巨大 PyQt window 的快照?

How to make a snapshot of a specific huge PyQt window?

我打算在 python 3 中编写一个脚本,它将在 window(或滚动区域)(之前在 Qt Designer 5 中创建并转换)中构建一些 graph/diagram/chart到 *.py)。图表可能会比屏幕尺寸大(比如 2k x 3k 像素)。 如何保存该图的快照图片?

例如。

  1. 用户加载数据并更改一些设置。
  2. Python 构建图表。
  3. 用户点击 "save snapshot"。
  4. Python 节省 graphsnapshot.png.
  5. 结束。

UP1。忘记补充了。 Graph 是代码生成的进度条、标签、水平线和垂直线等的组合。

UP2。 Proposed solution 适用于 PyQt4。但我使用 PyQt5,其中命令 grabWidget 和 grabWindow 已过时,不建议使用。

Obsolete Members for QPixmap. The following members of class QPixmap are obsolete. They are provided to keep old source code working. We strongly advise against using them in new code.

好的。这是正确的解决方案发布。

为了保存巨大 window(甚至比屏幕分辨率还大)的快照,可以使用下面的一些代码:

方式一

pix = QtGui.QPixmap(widget.size())
widget.render(pix)
pix.save("save.png")

方式二

pix=widget.grab()
pix.save("save.png")