Paepoi » PyGObject Tips » GSettings(PyGObject) Tips
Gio(PyGObject) Tips
# 最終更新日 2019.08.25
新規追加
詳しいことは以下の URL にて
GVariant Format Strings: GLib Reference Manual
新規追加
GSettings 基本
#!/usr/bin/env python3 ''' GNOME の時計を変更するサンプルコード ''' from gi.repository import Gio settings = Gio.Settings(schema='org.gnome.desktop.interface') # 曜日の表示 bool b = settings.get_boolean('clock-show-weekday') r = input(f'現在曜日の表示は {b} です、{not b} にしますか[Y/n]? :') if r.lower() == 'y': settings.set_boolean('clock-show-weekday', not b) # 12h 24h 切り替え str s = settings.get_string('clock-format') t = '24h' if s == '12h' else '12h' r = input(f'現在時刻の表示は {s} です、{t} にしますか[Y/n]? :') if r.lower() == 'y': settings.set_string('clock-format', t)
GSettings バリアント値
GVariant は GLib の項目ですがたぶんココでしか使わないので詳しいことは以下の URL にて
GVariant Format Strings: GLib Reference Manual
#!/usr/bin/env python3 ''' Gedit のプラグインと Nautilus の初期サイズを変更します 問題ないものを選んだつもりですが動かした場合は各自で元に戻してください。 ''' from gi.repository import Gio, GLib # # 文字列の配列、dconf-editor で見ると ['abc', 'def'] みたいな表示 # a が配列の意味、s が文字列 # settings = Gio.Settings(schema='org.gnome.gedit.plugins') plugins = settings.get_value('active-plugins').unpack() print(plugins) if 'spell' in plugins: print('Gedit プラグインに spell が含まれています、取り除きます') plugins.remove('spell') a = GLib.Variant('as', plugins) settings.set_value('active-plugins', a) else: print('Gedit プラグインに spell が含まれていますせん、追加します') plugins.append('spell') a = GLib.Variant('as', plugins) settings.set_value('active-plugins', a) # Gedit の設定を開いて確認 # # タプル、dconf-editor で見ると (300, 240) みたいな表示 # タプルは Python のものがそのまま使える、i は整数 # settings = Gio.Settings(schema='org.gnome.nautilus.window-state') w, h = settings.get_value('initial-size').unpack() print(f'width={w} height={h}') if h == 400: print('Nautilus のサイズを 890x550 (default) に変更します') d = GLib.Variant('(ii)', (890, 550)) settings.set_value('initial-size', d) else: print('Nautilus のサイズを 400x400 に変更します') d = GLib.Variant('(ii)', (400, 400)) settings.set_value('initial-size', d) # Nautilus で Ctrl+N を押して確認
GSettings のバインド
#!/usr/bin/env python3 import sys, gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk, GObject, Gio class Win(Gtk.ApplicationWindow): ''' GSettings のバインド(同期)のサンプルコード 理解り易くするため GUI にしています Gedit の行番号表示をこのアプリ、Gedit 自体の設定、 dconf-editor すべてで同期します ''' def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app, title='Py') # GtkSettings self.settings = Gio.Settings(schema='org.gnome.gedit.preferences.editor') # Gedit の行番号 cb = Gtk.CheckButton(label='Gedit の行番号を表示する') # バインド、最後の引数は Gio.SettingsBindFlags.DEFAULT だけどゼロでいい self.settings.bind('display-line-numbers', cb, 'active', 0) self.add(cb) self.show_all() class App(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_startup(self): Gtk.Application.do_startup(self) Win(self) def do_activate(self): self.props.active_window.present() app = App() app.run(sys.argv)
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.