Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Определение типа виджета из программы (на Pyhron-е)  (Прочитано 609 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VAK_53

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Никак не найду, как определить тип/класс виджета из программы (на Pyhron-е).
Получаю набор объектов интерфейса из builder и надо отфильтровать и поменять наклейки (label) у кнопок.

Заранее спасибо за внимание.

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля

Оффлайн VAK_53

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Спасибо, добрый человек за оперативный ответ. Пример из ГИСа достаточно убедителен, чтобы использовать в своей работе, но на рабочем месте окажусь только в понедельник... Главное, чтобы работало.
Но остается какой-то осадок и сомнение в  строгости метода. Вот что мы должны принять во внимание согласно PyGTK 2.0 Tutorial by John Finlay:
18.4. Widget Name Methods
The following widget methods set and get the name of a widget:
widget.set_name(name)
name = widget.get_name()
name is the string that will be associated with the widget. This is useful for specifying styles to be used with specific
widgets within an application. The name of the widget can be used to narrow the application of the style as opposed
to using the widget’s class.

Последнее предложение Гугл перевел так (машинный перевод использую, чтобы придерживаться стандартной лексики):
 Название виджета может быть использовано, чтобы сузить применение стиля в отличие от использования класса виджета
Значит виджеты все-таки имеют классы, но почему они нам не доступны?
Повторюсь за Володей Высоцким:
"Ну,а завтра спросят дети,
Навещая нас с утра:
Папы, что сказали эти
Кандидаты в доктора?
Мы откроем нашим чадам
Правду - им не все равно:
Удивительное рядом,
Но оно запрешено."

Ну это конечно шутка...
Хочется дойти до истины, если она есть.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
 :idiot2: а зачем так сложно  :idiot2: или я чего-то не понимаю :idiot2:

Если имена лейблам сразу задавать как _('бла-бла') и грузить объект gettext (gettext.translation(....., fallback=True).install() ) то оно само все будет меняться. Зачем мудрить с ручной заменой лейблов? :idiot2:\\

Если же лейблы нужно менять динамически, то можно их объявлять как переменные объекта и делать им .set_label('бла-бла'), но лучше .set_label(_('бла-бла')) если там текст который нужно локализовать.
« Последнее редактирование: 05 Февраля 2016, 22:23:09 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Вот что мы должны принять во внимание согласно PyGTK 2.0 Tutorial by John Finlay:
Важное уточнение - в gis-weather Gtk3

Sly_tom_cat,
Там даже не надо _() задавать. Они по умолчанию в Glade "переводимые". Проблема в том, что перевод осуществляется только при запуске программы. А если хочется перевод "на лету", то нужно мудрить с ручной заменой.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
 :idiot2: а для чего перевод на лету то? :idiot2:

Как по мне так если приложение и должно работать в локали системы то на ходу оно меняться в принципе не должно. В системе локаль только в рамках сессии поменять можно. Программа это (в моем понимании) объект атомарный с точки зрения локали - т.е. если с одной запустился то с ней пусть и работает. Надо в другую локаль переключится - пере запусти просто приложение - в чем вопрос то?
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 764
    • Просмотр профиля
Sly_tom_cat,
освежил я память. Закомментировал функцию перевода glade формы. И увидел, что glade форма не переводится. Из-за этого был сделан весь этот велосипед с переводом, и только потом он был прикручен для "на лету".

Но автору темы, возможно, не для перевода это нужно.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12130
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
RingOV, вот поэтому я стараюсь всегда детально описать ситуацию, когда "костыль к коду изолентой приматываю" :D Без таких комментариев потом хрен вспонишь - зачем тот костыль был прикручен :idiot2: и костыль ли это или нормальный кейс :o.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.051 секунд. Запросов: 25.