2015-06-22 5 views
3

Я использую Glade 3.18 для разработки интерфейсов, которые я позже загружаю PyGObject из модуля gi, чтобы создать пользовательский интерфейс Gtk 3.16.Внедрение замены этикетки для обесценивания кнопок Gtk 3.10+ в PyGObject 3.16

Чтобы воспользоваться примером, давайте воспользуемся кнопкой «ОК». В справочных руководствах (как для Gtk 3 и GI) утверждают, что:

GTK_STOCK_OK устарела начиная с версии 3.10 и не должны использоваться во вновь создаваемом коде.

Не используйте значок. Используйте метку «_OK».

Однако, установив метку '_OK' (раздел на вкладке «Общие», в «Этикетка с дополнительным изображением»), либо программно с помощью button.set_label('_OK') или в Поляне, производит кнопку, которая отображает «_OK», а не ожидаемый «ОК» и значок.

Итак, мой вопрос: какой правильный способ реализовать предлагаемую замену для Gtk.STOCK_OK с PyGObject 3.16?

ответ

1

Вы должны упаковать Gtk.Image и Gtk.Label внутри Gtk.Box и упаковать ящик внутри Gtk.Button. Вы также должны использовать Gtk.Button.set_always_show_image() на вашей кнопке и Gtk.Button.use_underline(), чтобы включить мнемонику для метки _OK.

box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) 
# image and label are defined elsewhere 
box.add(image) 
box.add(label) 
button = Gtk.Button(use_underline=True, always_show_image=True) 
button.add(box) 
button.show_all() 

В любом случае, вы настоятельно рекомендуется не использовать изображение или общий ярлык, как «OK». Используйте соответствующую метку, описывающую действие, и избегайте бессмысленной иконки.

Иконки и ярлыки запаса устарели, потому что они недостаточно гибки для разработчиков приложений. Значки на складе не охватывают весь набор доступных именованных значков из темы значка; бирки акций обычно недостаточно выразительны для понимания пользователями, а также фиксированные мнемоники, которые могут сталкиваться с сложными пользовательскими интерфейсами (например, «_Open» и «_OK»), особенно когда речь идет о переводах.

Аналогичным образом, GTK не предоставляет пользователю пользовательскую настройку, чтобы переключать видимость значков в меню и кнопках; разработчики приложений и разработчики несут ответственность за принятие решения о том, должен ли элемент меню или кнопка иметь значок или нет, поскольку они отвечают за то, как GUI должен выглядеть и вести себя.

Разработчикам приложений настоятельно рекомендуется использовать яркие ярлыки в своих пользовательских интерфейсах и использовать значки из тем, где это оказывает наибольшее влияние.

+2

Это будет принудительное изображение, которое не то, что я хочу. Кнопка должна отображать значок запаса в зависимости от предпочтений пользователя, например, 'Gtk.STOCK_OK'. Что касается использования общих ярлыков, я не согласен: я вряд ли смогу с помощью чего-то добавить, кроме «добавить», «отменить», «помочь», «удалить» или кучу других кнопок в тоннах случаев. (И вот почему они были созданы в первый раз ...) –

+0

Весь подход к значкам акций, пользовательским предпочтениям, переключающим значки, и бирки акций с фиксированной мнемоникой, устарел, потому что он явно не работает должным образом и не подходит в руководства по интерфейсам различных ОС. Либо вы всегда показываете значок, потому что ваше приложение предназначено для этого, либо вы показываете ярлык. – ebassi

+1

Ну, это настоящая потеря.Позволяя пользователю выбирать, как должны выглядеть интерфейсы для сильной согласованности в сеансе, и была большой силой Gtk, по крайней мере, в средах GNU/Linux. Во всяком случае, спасибо за эту точность; вы должны подумать о том, чтобы добавить его к своему ответу, я думаю, что он по крайней мере так же уместен, как ваш первый ответ, если не больше. –