Как получить доступ к настройкам из основного диалогового окна? Также, как я могу добавить новое предпочтение?

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 () ???

2
задан 20 June 2012 в 12:29

1 ответ

Хорошо я решил его.

Сначала я должен был отредактировать 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")
4
ответ дан 20 June 2012 в 12:29

Другие вопросы по тегам:

Похожие вопросы: