Question

J'apprends Python depuis un moment maintenant avec un certain succès.J'ai même réussi à créer un ou deux programmes (simples) en utilisant PyGtk + Glade.

La chose est:Je ne sais pas si la meilleure façon d'utiliser GTK avec Python est de créer les interfaces à l'aide de Glade.

Je me demandais si les plus expérimentés d'entre nous (rappelez-vous, je ne suis qu'un débutant) pourraient souligner les avantages et les inconvénients de l'utilisation de Glade plutôt que de tout créer dans le code lui-même (en supposant qu'apprendre les bonnes liaisons gtk ne le ferait pas). exactement un problème).

Était-ce utile?

La solution

Je dirais que ça dépend :si vous constatez qu'en utilisant Glade, vous pouvez créer les applications que vous souhaitez ou devez créer, c'est tout à fait correct.Si toutefois vous souhaitez réellement apprendre comment fonctionne GTK ou si vous avez des exigences d'interface utilisateur non standard, vous le ferez avoir pour fouiller dans les composants internes de GTK (qui ne sont pas si compliqués).

Personnellement, je suis généralement à environ 5 minutes d'un client riche lorsque j'ai besoin d'une fonctionnalité ou d'une personnalisation qui est tout simplement impossible via un concepteur tel que Glade ou Stétique.Peut-être que c'est juste moi.Néanmoins, il m'est toujours utile d'amorcer la conception de fenêtres à l'aide d'un outil graphique.

Ma recommandation:si créer des clients riches en utilisant GTK constitue une partie importante de votre travail/passe-temps, apprenez également GTK puisque vous volonté je devrai écrire ce code un jour.

P.S.perso je trouve Stétique être supérieur à Glade pour le travail de conception, même s'il est un peu plus instable.

Autres conseils

Utilisez GtkBuilder au lieu de Glade, il est intégré à Gtk lui-même au lieu d'une bibliothèque distincte.

Le principal avantage de Glade est qu'il est beaucoup plus facile de créer l'interface.C'est un peu plus de travail pour connecter les gestionnaires de signaux, mais je n'ai jamais pensé que cela importait beaucoup.

Glade est très utile pour créer des interfaces, cela signifie que vous pouvez facilement modifier l'interface graphique sans faire beaucoup de codage.Vous constaterez que si vous voulez faire quelque chose d'utile (par ex.construire une arborescence), vous devrez vous familiariser avec différentes parties de la documentation GTK - en pratique, trouver un bon tutoriel/des exemples.

J'ai commencé à utiliser Glade, mais j'ai rapidement commencé à tout faire en code.Glade est bien pour les choses simples, et c'est bien quand vous apprenez comment GTK organise les widgets (comment les choses sont emballées, etc.).Cependant, en construisant tout dans le code, vous disposez de beaucoup plus de flexibilité.De plus, vous n'avez pas de dépendance à Glade.

Je commence généralement avec Glade jusqu'à ce que j'arrive à un point où il n'a plus les fonctionnalités dont j'ai besoin, par ex.créer un assistant.Tant que j'utilise les widgets standard fournis par Glade, il n'y a vraiment aucune raison de coder manuellement l'interface graphique.

Plus je me familiarise avec la façon dont Glade formate le code, meilleur est mon codage manuel.Sans oublier qu'il est très simple d'utiliser Glade pour créer le framework sous-jacent afin que vous n'ayez pas à vous soucier de toutes les initialisations.

Si vous écrivez une application GUI traditionnelle qui réutilise de nombreux composants standard de GTK+ (boutons, étiquettes, conteneurs, etc.), j'opterais personnellement pour Glade + Kiwi (un cadre pratique pour créer des applications GUI GTK+).

Le plus grand avantage de l’utilisation de Glade est qu’elle réduit considérablement le code de mise en page/emballage.Voici un exemple extrêmement simple qui montre déjà les problèmes liés à la mise en page manuelle d'une interface graphique (sans utiliser de fonctions d'assistance) :

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

Pour plus d'exemples, prenez un regarde ici.Même si vous écrivez un widget personnalisé compliqué, vous pouvez toujours créer un espace réservé dans Glade et le remplacer après l'instanciation.

L'équipe Glade ne devrait pas tarder à sortir une nouvelle version du designer (3.6.0).Cette nouvelle version ajoutera le support de GtkBuilder, qui remplace libglade (la véritable bibliothèque qui transforme les fichiers XML Glade en une arborescence de widgets).Le nouveau concepteur Glade ajoute également une fois de plus la prise en charge de la définition de catalogues (ensembles de widgets) en Python, afin que vous puissiez facilement ajouter vos propres widgets personnalisés.

Je recommande d'utiliser Glade pour un développement rapide, mais pas pour l'apprentissage.Pourquoi?car parfois, vous devrez régler certains widgets pour qu'ils fonctionnent comme vous le souhaitez, et si vous ne connaissez/ne comprenez pas vraiment les attributs de propriétés de chaque widget, vous aurez des problèmes.

Pour des écrans simples et rapides, j'utilise Glade.Mais pour tout ce qui nécessite des niveaux de contrôle plus fins, je crée des classes personnalisées pour ce dont j'ai réellement besoin (c'est important, car il est trop facile de se laisser emporter par des généralisations).

Avec des classes spécifiques à des applications maigres, je peux rapidement modifier l'apparence et la convivialité de l'application à partir d'un seul endroit.Un peu comme utiliser CSS pour maintenir la cohérence des sites Web.

Personnellement, je recommanderais de le coder au lieu d'utiliser Glade.J'apprends encore Python et pyGtk, mais je dirai que l'écriture manuelle de l'interface utilisateur m'a donné beaucoup d'informations sur la façon dont les choses fonctionnent sous le capot.

Une fois que vous l'avez appris, je dirais d'essayer Glade ou d'autres concepteurs d'interface utilisateur, mais apprenez certainement d'abord à le faire de manière "dure".

Tout d’abord, commençons à mettre cela en perspective.

Vous utiliserez GTK.Il s'agit d'une immense bibliothèque C construite en 1993 en utilisant les meilleures traditions du style de codage des années 1970.Il a été conçu pour aider à implémenter GIMP, un concurrent de Photoshop en herbe avec des erreurs d'interface utilisateur légendaires.Un champ graphique typique peut avoir quarante paramètres ou plus, pour la plupart répétitifs, ayant des getters et des setters.Il y aura de la douleur.

Le GTK gère lui-même un système de types dynamiques complet en C à l'aide de GObject.Cela fait du débogage une joie particulière qui nécessite de parcourir manuellement des tableaux de pointeurs vers des méthodes remplies de listes d'arguments génériques avec héritage implicite.Vous naviguerez également dans les bibliothèques Pango lorsque vous vous y attendrez le moins, par exemple en utilisant une constante Pango pour savoir où vont les points de suspension dans une étiquette lorsque la page est petite.Attendez-vous à plus de douleur.

À l'heure actuelle, vous vous engagez probablement à regrouper toutes vos interactions GTK dans une architecture Modèle-Vue-Contrôleur spécifique à votre application.C'est bon.

Utiliser Glade, ou gtkBuilder, ou Stetic, aidera à résoudre l'énorme problème de couplage de quarante paramètres à une fonction.Glade fournit un générateur d'interface graphique de base pour glisser et déposer des composants ensemble.Les paramètres et les paramètres hérités sont quelque peu séparés.La sortie de Glade est un fichier XML .glade que vous lirez ensuite, attacherez vos rappels ("gestionnaires de signaux") à des fonctions portant le même nom, et interrogerez ou mettrez à jour la version en mémoire de ce XML pour obtenir des widgets que vous utiliserez ensuite pyGTK. manipuler.Glade elle-même est grinçante et mal entretenue.

L'utilisation de pyGTK vous donne un contrôle extrêmement fin afin de créer votre interface graphique.Ce sera du code verbeux, copier-coller.Chaque attribut sera un appel de fonction distinct.Le setter d'attributs ne renvoie rien, il est donc hors de question d'enchaîner les appels.Habituellement, votre IDE ne fournira qu'une aide minimale sur la signification des fonctions et vous ferez constamment référence à DevHelp ou à un autre outil.

On pourrait presque s’attendre à ce que les interfaces graphiques GTK soient vouées à l’échec.

Vous pouvez utiliser Glade-2 pour concevoir et utiliser glade2py.py Pour générer le code pygtk pur, il utilise pygtkcompat pour prendre en charge GTK3

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top