IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GUI Python Discussion :

interface graphique sans Glade


Sujet :

GUI Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut interface graphique sans Glade
    Bonjour à tous,
    Tout d'abord, je suis un newb en python, désolé si les questions ne sont pas d'un niveau très élevé.
    J'ai commencé un projet avec une interface graphique avec Glade. Jusque là tout va bien et j'accède dans mon code à mes différent GTKEntry, GTKButton par leur nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    builder.get_object("qty_1")
    (où builder = Gtk.Builder()

    Par contre j'ai une liste de GTKEntry et GTKButton qui sont créés à la volée pendant l'exécution du programme, et ces objets là sont inaccessibles par la méthode décrite. Voilà comment je les créé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    from gi.repository import Gtk, Gdk
    class monappli:
    	def __init__(self):
    		filename = "monelio.glade"
    		global builder
    		builder = Gtk.Builder()
    		builder.add_from_file(filename)		
    		builder.connect_signals(self)
    ...
    		entry1 = Gtk.Entry()
    		entry1.set_width_chars(3)
    		entry1.set_name("qty_" + str(x+1))
    		print entry1.get_name()
    # ce print fonctionne
    		grid.attach_next_to(entry1, button2, Gtk.PositionType.RIGHT, 1, 1)
    #		print builder.get_object("qty_" + str(x+1)).get_name()
    # ce print échoue avec NoneType object has no attribte get_name
    Je suis un peu perdu. Dand le fichier glade je vois que le "name" est visible en tant que "id" mais je ne trouve pas de propriété "id" pour mes objets Gtk.

    Une idée ?
    Merci beaucoup
    xavier

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Pourquoi ne conserves tu aucune référence de tes widgets, si c'est pour devoir faire un get_object() pour y accéder par après ?

    Ça ne me parait pas très rationnel, ça.

    Pour ton erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		print builder.get_object("qty_" + str(x+1)).get_name()
    # ce print échoue avec NoneType object has no attribte get_name
    Si je lis bien c'est get_object() qui retourne None, ce qui pourrait signifier que cet objet n'existe pas ou plus.
    Fais-le en deux fois pour voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    obj = builder.get_object("qty_" + str(x+1))
    print obj, obj.get_name()
    Mais bon, conserver une référence me semble une bien meilleure pratique que de devoir partir à la recherche de ses widgets.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour ta réponse.
    J'ai pensé à conserver une référence e chacun de mes widgets mais ils sont construits dans une boucle (j'ai une liste d'article à afficher et des boutons pour jouer sur des quantités)
    Est-il possible de faire une liste de widgets ? Aurais-tu un petit exemple ?
    Merci beaucoup

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si ils sont créés dans une boucle, alors oui la liste est une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    self.entries = []
    for item in items:
        e = Gtk.Entry()
        ...
        self.entries.append(e)
    Tu dois donc connaître l'ordre de création.

    Sinon un dictionnaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    self.entries = {}
    for item in items:
        e = Gtk.Entry()
        ...
        self.entries[item] = e
    Là tu pourras y accéder par leur nom.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Super, merci !
    je m'en suis sorti avec une list finalement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. interface graphique sans aucun composant
    Par moooona dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 29/05/2008, 17h36
  2. [Débutant] Réinitialiser une interface graphique sans en sortir
    Par Alucard9800XT dans le forum Interfaces Graphiques
    Réponses: 9
    Dernier message: 23/04/2007, 16h32
  3. Sql - interface graphique - Sans serveur
    Par mélinée dans le forum Langages de programmation
    Réponses: 17
    Dernier message: 02/12/2006, 20h49
  4. Interface graphique sans IDE
    Par stoof23 dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 28/04/2004, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo