Paepoi » PyGObject Tips » PyGObject Tips | スクリーンショットを保存
PyGObject Tips | スクリーンショットを保存
# 最終更新日 2019.09.14
単独ページに整理、Wayland 関連の追記。
下記は X.org でないと動作しません。
Wayland では Gnome Shell の機能を呼び出し、X.org でも動く。
GNOME 以外で使えるかどうかは試していません。
単独ページに整理、Wayland 関連の追記。
下記は X.org でないと動作しません。
#!/usr/bin/env python3 # Wayland では動作しません import gi gi.require_version('Gdk', '3.0') from gi.repository import Gdk rootwin = Gdk.get_default_root_window() x, y, w, h = rootwin.get_geometry() pixbuf = Gdk.pixbuf_get_from_window(rootwin, x, y, w, h) pixbuf.savev('screenshot.png', 'png', ['compression'], ['9'])
Wayland では Gnome Shell の機能を呼び出し、X.org でも動く。
GNOME 以外で使えるかどうかは試していません。
#!/usr/bin/env python3 from gi.repository import GLib, Gio HOME = GLib.get_home_dir() class App(Gio.Application): ''' use mainloop Since there is no window, it ends as it is. ''' def __init__(self): Gio.Application.__init__(self) def do_startup(self): Gio.Application.do_startup(self) connection = self.get_dbus_connection() ''' # 全画面 (カーソルを含める, フラッシュ, ファイル名) connection.call_sync( 'org.gnome.Shell.Screenshot', '/org/gnome/Shell/Screenshot', 'org.gnome.Shell.Screenshot', 'Screenshot', GLib.Variant('(bbs)', (False, True, f'{HOME}/全画面.png')), None, 0, -1) ''' #''' # ウインドウ (ボーダー, カーソルを含める, フラッシュ, ファイル名) connection.call_sync( 'org.gnome.Shell.Screenshot', '/org/gnome/Shell/Screenshot', 'org.gnome.Shell.Screenshot', 'ScreenshotWindow', GLib.Variant('(bbbs)', (True, True, True, f'{HOME}/ウインドウ.png')), None, 0, -1) #''' ''' # 範囲 (x, y, width, height, フラッシュ, ファイル名) connection.call_sync( 'org.gnome.Shell.Screenshot', '/org/gnome/Shell/Screenshot', 'org.gnome.Shell.Screenshot', 'ScreenshotArea', GLib.Variant('(iiiibs)', (0, 0, 500, 100, True, f'{HOME}/範囲.png')), None, 0, -1) ''' def do_activate(self): pass app = App() app.run()
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.