Свойства PyGTK против свойств Python - PullRequest
2 голосов
/ 11 мая 2011

При выводе из класса GObject в PyGTK вы можете определять свойства GObject, как в C, используя __gproperties__ dict и do_get_property / do_set_property методы, как описано здесь в Подкласс GObject вPython .Обратите внимание, что это было написано до того, как у нас был @property декоратор в Python.

Свойства GObject имеют то преимущество, что вы можете подключиться к сигналу notify::property-name объекта, чтобы получать уведомление при каждом изменении свойства.Кроме этого, есть ли веская причина использовать свойства GObject вместо декоратора @property Python?

Ответы [ 2 ]

1 голос
/ 30 мая 2011

Почему бы не использовать их? С упрощенной версией , предоставленной Привязки Python, определяющие свойства GObject, ничем не отличаются от определение свойств Python.

Сказав это, есть несколько преимуществ, кроме уведомление. То, что я использовал в прошлом, это собственность установка в файлах gtk.Builder. Например, в вашем файле пользовательского интерфейса,

<object class="GtkImage" id="image">
  <property name="stock">gtk-missing-image</property>
</object>

устанавливает свойство stock объекта Image при его создании Класс строителей; если вы используете свойства GObject в ваши собственные виджеты, вы также можете воспользоваться этим. Такое поведение будет даже более полезный с появлением поддержки связывания свойств в Glade .

Другим потенциальным преимуществом являются минимальные / максимальные пределы свойств GObject и значения по умолчанию для целых чисел и чисел с плавающей точкой, которые иногда могут быть полезны для Свойства, связанные с пользовательским интерфейсом.

1 голос
/ 24 мая 2011

Кроме того, есть ли веская причина использовать свойства GObject вместо декоратора @property Python?

Не совсем. Для них много шаблонов, поэтому, если мне не нужны сигналы notify, я пишу все, что мне нужно, в Python.

Сказав это, довольно часто я подумаю: «Мне не нужны уведомления об этом свойстве», а затем пойму, что «на самом деле мне это свойство вообще не нужно».

...