LoginSignup
2
3

More than 5 years have passed since last update.

PyQt5のウインドウを画面キャプチャ(QGraphicsViewの場合)

Last updated at Posted at 2016-09-21

目的

僕がPyQt5で画面キャプチャをしたかった時に詰まったので,解決法を共有します.
結果だけ見てしまえば単純なんです.

しかし,この記事を書いた時点ではネット上にPyQt4の情報が多く情報が混在していたため,書いておきます.

環境

  • Python: 3.5.2
  • PyQt: 5.7
  • OS: MacOS 10.11.6 (Windows 10でも動作確認しました.)

依存

  • PyQt5 (Pythonモジュール)

結論

QGraphicsViewの場合

import sys
from PyQt5.QtWidgets import QApplication, QGraphicsView

if __name__ == '__main__':
    app  = QApplication(sys.argv)
    view = QGraphicsView()
    view.show()
    view.grab().save("test.png")
    print("test.png is saved!")
    sys.exit(app.exec_())

PyQt4との違い

PyQt4においては,grabWindow()で現在のウインドウを取得し,それをQPixmapに渡して出力していたようです.
しかし,参考文献からわかるようにその機能がPyQt5で使われなくなり,上のように簡易的な表現となっています.

返り値を見てみると,内部的な受け渡しではQPixmapが使われていますが,
現在の結果を出力するだけであれば,ユーザが明示的にQPixmapを定義する必要は無くなりました.

PyQt4のソースコードを乗せると結論が分かりにくくなるので,ここには書かないことにします.

参考文献

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3