web-dev-qa-db-fra.com

Créer des widgets en utilisant GtkBuilder

J'utilise Glade pour concevoir une boîte avec des widgets, puis les charger dans mon interface utilisateur au moment de l'exécution. Pour créer chaque boîte avec des widgets au moment de l'exécution, je crée un nouveau GtkBuilder, appelez add_from_string en transmettant le texte du fichier .ui créé par Glade, puis utilise l'objet renvoyé par get_object ("box1") dans l'interface utilisateur. Je sais que je pourrais créer les widgets avec du code, mais pour l’instant, j’aimerais utiliser les fichiers .ui créés par Glade. Cela semble inefficace d'instancier un nouvel objet GtkBuilder et l'objet Window gaspillé pour chaque Box que je veux créer. Existe-t-il une méthode plus efficace pour charger des fichiers .ui sans créer un nouvel objet GtkWidget et un objet Window gaspillé?

Merci, Vance

4
user72943

Si vous souhaitez que différents morceaux soient déplacés dans différentes zones au moment de l'exécution, vous pouvez créer un fichier glade avec des charges de fenêtres et les redéfinir. Pour un exemple, vérifiez ce que j'ai fait pour cette autre question .

2
RobotHumans

Si vous souhaitez remplir votre interface graphique avec de nouveaux widgets pendant l'exécution de votre application, il est totalement erroné de créer un ensemble de fichiers .ui et de GtkBuilders distincts pour eux. Il est très facile de créer un seul widget à partir du code.

Je suppose que vous utilisez Python, puisque vous avez étiqueté votre question comme pygtk .

Regardez un exemple simple:

from gi.repository import Gtk

et:

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

Eh bien, cela ne fonctionnera pas tout seul, mais c'est comme ça que vous pouvez créer de nouveaux widgets. Pour plus de détails sur des widgets particuliers, consultez cet élégant tutoriel/docs: http://python-gtk-3-tutorial.readthedocs.org/

2
Rafał Cieślak