Paepoi » PyGObject Tips » Gtk(PyGObject) Tips | GtkSettings
Gtk(PyGObject) Tips | GtkSettings
# 最終更新日 2019.08.25
2019 年現在の仕様に追記と書き換え。
暗い外観のダークテーマにするのに必須です。
又アプリ内で使うフォントやタイトルバー右クリックの設定をデフォルトから変更等もできます。
詳しくは devhelp で、プロパティの変更が結構多いので利用する場合は慎重に。
2019 年現在の仕様に追記と書き換え。
GtkSettings
GtkSettings は GdkScreen 内(ウインドウを表示している領域内)の設定です。暗い外観のダークテーマにするのに必須です。
又アプリ内で使うフォントやタイトルバー右クリックの設定をデフォルトから変更等もできます。
詳しくは devhelp で、プロパティの変更が結構多いので利用する場合は慎重に。
#!/usr/bin/env python3
import sys, gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
class Win(Gtk.ApplicationWindow):
'''
GSettings ではなくこのアプリ内のみ変更されます
存在しないフォント(編集中含む)はデフォルトが適用される
'''
def __init__(self, app):
Gtk.ApplicationWindow.__init__(self, application=app, title='Py')
# GtkSettings
self.settings = Gtk.Settings.get_default()
# ListBox
listbox = Gtk.ListBox(selection_mode=Gtk.SelectionMode.NONE)
# ダークテーマ
label_dt = Gtk.Label(label='ダークテーマ')
switch_dt = Gtk.Switch()
GObject.Binding.bind_property(
switch_dt, 'active',
self.settings, 'gtk_application_prefer_dark_theme',
GObject.BindingFlags.BIDIRECTIONAL )
hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
hbox.pack_start(label_dt, False, False, 0)
hbox.pack_end(switch_dt, False, False, 0)
listbox.insert(hbox, 0)
# font
label_fn = Gtk.Label(label='font')
entry_fn = Gtk.Entry(text=self.settings.props.gtk_font_name)
GObject.Binding.bind_property(
entry_fn, 'text',
self.settings, 'gtk_font_name',
GObject.BindingFlags.BIDIRECTIONAL )
hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
hbox.pack_start(label_fn, False, False, 0)
hbox.pack_end(entry_fn, False, False, 0)
listbox.insert(hbox, 1)
# Pack
self.add(listbox)
self.set_border_width(10)
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 --- 2025.