web-dev-qa-db-fra.com

Est-ce que glade peut être utilisé avec python pygi introspection?

Une fois, j'ai commencé un tutoriel sur PyGtk et Glade mais je ne l'ai jamais terminé. Récemment, j’ai vu que PyGtk était déprécié au profit de l’introspection sur https://wiki.ubuntu.com/MeetingLogs/appdevweek1104/GObjectIntrospection et https://wiki.ubuntu.com/MeetingLogs/appdevweek1104/PyGI . J'ai décidé d'essayer d'apprendre plus de python et de Gtk en utilisant à nouveau le nouveau moyen. Les pages que j'ai liées semblent indiquer comment vous y prendriez si je voulais créer l'interface graphique dans le code, mais j'aime utiliser Glade. Y a-t-il un moyen de faire cela tout en utilisant la nouvelle introspection?

5
Azendale

Oui, en fait c'est presque exactement la même chose:

from gi.repository import Gtk

class Test (object):

    def __init__(self):
        self.builder = Gtk.Builder()
        self.builder.add_from_file("test.glade")
        self.builder.connect_signals(self)

    def run(self, *args):
        self.builder.get_object("window1").show()
        Gtk.main()

    def quit(self, *args):
        Gtk.main_quit()


Test().run()

De nombreux programmes plus petits ne nécessiteront que peu d'effort de conversion. Vous pouvez commencer par basculer vers l'introspection de gobject à l'aide des deux lignes suivantes, puis corriger les erreurs éventuelles en les cherchant dans la référence.

from gi.repository import Gtk as gtk
from gi.repository import Gobject as gobject

Par exemple, gtk.RESPONSE_OK sera appelé Gtk.ResponseType.OK lorsque vous utilisez l'introspection.

7
Stefano Palazzo

N'oubliez pas que vous avez besoin de Glade 3.10 ou plus récent pour créer une interface GTK 3. 3.8 ou une version plus ancienne correspond à GTK 2. Dans Ubuntu, les packages sont appelés glade et glade-gtk2.

Si vous avez besoin de convertir une (ancienne) application PyGTK en PyGI, vous devez essayer le script pygi-convert fourni avec l'archive tarGO de PyGObject. Dans de nombreux cas, cela devrait suffire à transformer votre application. On le trouve également dans GIT: http://git.gnome.org/browse/pygobject/tree/pygi-convert.sh

Le lien suivant devrait également vous aider avec quelques explications de base sur les choses courantes qui ont changé: https://live.gnome.org/PyGObject/IntrospectionPorting

Et enfin, voici un effort (très gentil) pour créer un tutoriel PyGI: http://readthedocs.org/docs/python-gtk-3-tutorial/en/latest/index.html

Je trouve utile de jeter un coup d’œil sur la documentation C lors de la construction de quelque chose: http://developer.gnome.org/gtk3/ Une fois que vous savez comment tout se passe en Python, cela peut être très difficile. bonne ressource pour les choses qui ne sont pas encore documentées. Regardons l'exemple de gtk.RESPONSE_OK donné dans l'autre réponse. Lorsque vous allez dans la documentation C, vous trouverez ceci: http://developer.gnome.org/gtk3/3.2/GtkDialog.html#GtkResponseType Prenez le nom de l’énumère (GtkResponseType) et scindez le ' Gtk 'partie par un point et ajoutez le type enum sans la partie GTK_ *, ainsi vous obtiendrez: Gtk.ResponseType.OK Cela fonctionne avec toutes les énumérations que j'ai rencontrées.

2
Timo