Создание виджетов с использованием GtkBuilder

Я использую Glade для разработки Box с виджетами, а затем загружаю эти виджеты в мой интерфейс во время выполнения. Чтобы создать каждый Box с виджетами во время выполнения, я создаю новый GtkBuilder, вызываю add_from_string, передавая текст из файла .ui, который создает Glade, а затем использую объект, возвращенный из get_object ("box1") в пользовательском интерфейсе. Я знаю, что мог бы создавать виджеты с кодом, но сейчас я бы хотел использовать файлы .ui, которые создает Glade. Хотя кажется неэффективным создавать новый объект GtkBuilder и потраченный впустую объект Window для каждого ящика, который я хочу создать. Есть ли более эффективный способ загрузки файлов .ui без создания нового объекта GtkWidget и ненужного объекта Window?

Спасибо, Вэнс

4
задан 2 July 2012 в 03:17

16 ответов

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

2
ответ дан 25 July 2018 в 18:14

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 25 July 2018 в 18:14

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 31 July 2018 в 12:55

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

2
ответ дан 31 July 2018 в 12:55

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

2
ответ дан 2 August 2018 в 00:28

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 2 August 2018 в 00:28

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

2
ответ дан 4 August 2018 в 15:56

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 4 August 2018 в 15:56

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

2
ответ дан 6 August 2018 в 00:34

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 6 August 2018 в 00:34

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

2
ответ дан 7 August 2018 в 18:00

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 7 August 2018 в 18:00

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 10 August 2018 в 06:48

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

2
ответ дан 10 August 2018 в 06:48

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

2
ответ дан 15 August 2018 в 18:44

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

Я предполагаю, что вы используете Python, поскольку вы пометили свой вопрос как pygtk .

Взгляните на простой пример:

from gi.repository import Gtk

и:

my_window = Gtk.Window()
my_button = Gtk.Button()
my_window.add(my_button)
my_window.show_all()

Ну, на самом деле он не будет работать сам по себе, но вот как вы можете создавать новые виджеты. Для получения подробной информации о конкретных виджетах перейдите к этому элегантному учебнику / документам: http://python-gtk-3-tutorial.readthedocs.org/

2
ответ дан 15 August 2018 в 18:44
  • 1
    Спасибо rafalcieslak. Да, я использую Python. Я загружаю данные из интернет-API и отображаю данные в виджетах. Таким образом мне нужно генерировать виджеты во время выполнения. Я хотел бы использовать Glade, поскольку он упрощает позиционирование и настройку атрибутов виджетов; но почему это использование "неправильно"? – user72943 2 July 2012 в 06:11
  • 2
    @ user72943: Хотя glade предназначен для упрощения проектирования, он подходит только для статических интерфейсов, где во время выполнения ничего не меняется. Это потому, что GtkBuilder (как вы заметили) не будет работать эффективно, если вы будете просить его обрабатывать файл .ui каждый раз, когда вам нужен новый виджет ... Glade может быть полезен здесь для проверки расположения виджетов и работы над дизайном - тем не менее, если вы хотите, чтобы ваше приложение работало эффективно (особенно если вам нужно сделать много изменений в графическом интерфейсе во время выполнения), вам придется создавать виджеты «классическим способом». К счастью. это очень просто, и у вас не должно быть проблем с этим. – Rafał Cieślak 2 July 2012 в 16:25

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

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