class PreferencesCalorieBurnerDialog(PreferencesDialog):
__gtype_name__ = "PreferencesCalorieBurnerDialog"
def finish_initializing(self, builder): # pylint: disable=E1002
"""Set up the preferences dialog"""
super(PreferencesCalorieBurnerDialog, self).finish_initializing(builder)
# Bind each preference widget to gsettings
settings = Gio.Settings("net.launchpad.calorie-burner")
widget = self.builder.get_object('example_entry')
settings.bind("example", widget, "text", Gio.SettingsBindFlags.DEFAULT)
#Custom preference
widget = self.builder.get_object('weight')
settings.bind("weight", widget, "float", Gio.SettingsBindFlags.DEFAULT)
Главный диалог
self.PreferencesDialog.get_weight () ???
Хорошо я решил его.
Сначала я должен был отредактировать data/glib-2.0/schemas/net.launchpad.calorie-burner.gschema.xml:
Обратите внимание, что тип = "s" для строк, и введите = "i", для целых чисел
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="calorie-burner">
<schema id="net.launchpad.calorie-burner" path="/net/launchpad/calorie-burner/">
<key name="weight" type="i">
<range min="1" max="350"/>
<default>100</default>
<summary>User's Weight Kgs</summary>
</key>
<key name="units" type="s">
<choices>
<choice value='Metric'/>
<choice value='Imperial'/>
</choices>
<default>'Metric'</default>
</key>
<key name="energy" type="s">
<choices>
<choice value='KJs'/>
<choice value='Calories'/>
</choices>
<default>'KJs'</default>
</key>
</schema>
</schemalist>
Затем я должен был обеспечить электричеством свои ui элементы к моим предпочтениям:
В предпочтительном диалоговом окне я должен был сделать следующее:
# Bind each preference widget to gsettings
settings = Gio.Settings("net.launchpad.calorie-burner")
widget = self.builder.get_object('weight')
settings.bind("weight", widget, "value", Gio.SettingsBindFlags.DEFAULT)
widget = self.builder.get_object('cmbUnits-entry')
settings.bind("units", widget, "text", Gio.SettingsBindFlags.DEFAULT)
widget = self.builder.get_object('cmbEnergy-entry')
settings.bind("energy", widget, "text", Gio.SettingsBindFlags.DEFAULT)
Обратите внимание, что первым аргументом является название установки, вторым является виджет на ui, и третьим является свойство виджета, который содержит данные, которые я хочу хранить в своих предпочтениях.
Также отметьте полями комбинированного списка, которые я должен был включить, "Имеет Запись" для создания текстового поля с текстовым свойством.
Наконец в моем основном диалоговом окне я должен был сделать следующее:
from gi.repository import Gtk, Gio # pylint: disable=E0611
self.settings = Gio.Settings("net.launchpad.calorie-burner")
Для доступа к настройкам называют или get_string или get_int с названием установки:
self.settings.get_string("energy")
self.settings.get_string("units")
self.settings.get_int("weight")