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

GTK+ avec C & C++ Discussion :

Gtk 3.0 : fenêtre avec treeview dans un expander


Sujet :

GTK+ avec C & C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Gtk 3.0 : fenêtre avec treeview dans un expander
    En python avec Gtk 3.0, j'essaye d'obtenir une fenêtre avec un notebook. Dans ce notebook, il y a des expanders. Chaque expander contient un treeview.

    Après plusieurs tentative, j'obtient ce code :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import Gtk
     
    class MyWindow(Gtk.Window):
     
        def __init__(self):
            Gtk.Window.__init__(self, title="Hello World")
     
            # Create liststore which will be contained within treeview
            # liststore has 3 rows and 3 columns
            self.store = Gtk.ListStore(str, str, float)
            self.store.append(["string1.1", "string1.2", 1.0])
            self.store.append(["string2.1", "string2.2", 2.0])
            self.store.append(["string3.1", "string3.2", 3.0])
     
            # Create treeview which will be contained within one expander
            # treeview has 3 columns and contain liststore
            self.tree = Gtk.TreeView(self.store)
            for i, column_title in enumerate(["col1", "col2", "col3"]):
                renderer = Gtk.CellRendererText()
                column = Gtk.TreeViewColumn(column_title, renderer, text=i)
                self.tree.append_column(column)
     
            # Addind a callback to selection_changed event of treeview
            select = self.tree.get_selection()
            select.connect("changed", self.on_tree_selection_changed)
     
            # Create expander which will be contained within one notebook page
            # Adding treeview inside expander
            self.page1 = Gtk.Expander()
            self.page1.set_border_width(10)
            self.page1.add(self.tree)
     
            # Create notebook and adding expander inside first page
            self.notebook = Gtk.Notebook()
            self.add(self.notebook)
            self.notebook.append_page(self.page1, Gtk.Label('Page1'))
     
            self.Window = Gtk.Window()
            self.show_all()
     
        def on_tree_selection_changed(self, selection):
            model, treeiter = selection.get_selected()
            if treeiter != None:
              print("You selected", model[treeiter][0])
     
    win = MyWindow()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()
    Je n'arrive pas à afficher le treeview dans l'expander. Mais sans l'expander le treeview s'affiche correctement

    Je travail sur une Ubuntu 12.04 et je lance mon programme en utilisant la commande "python ihm.py"

    Quelqu'un saurait ou j'ai fait l'erreur car je ne trouve pas...

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Sur un autre forum, on me dit que ce code fonctionne sur une Ubuntu 16.04.
    Je ne comprend pas pourquoi avec cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gi.require_version('Gtk', '3.0')
    , la version de gtk n'est pas identique...

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour, j'avais vu ton post sur stackoverflow aussi. En fait cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gi.require_version('Gtk', '3.0')
    ne fait que vérifier que tu as une version de GTK 3, et pas du GTK 2 par exemple. En revanche elle ne fait pas la distinction entre du 3.0, 3.8 ou 3.20. Ce n'est pas elle non plus qui fixe ce que tu as installé sur ton système, c'est l'inverse: elle ne fait que vérifier ce qui est utilisable sur ton système.

    La version de GTK 3 qui est livrée dans ta version de distribution a vraisemblablement un bug qui a été corrigé dans les versions suivantes. Ce n'est pas étonnant : Ubuntu 12.04 fournit GTK 3.4 , alors que Ubuntu 16.04 fournit GTK 3.18. Entre ces 2 versions de GTK tu as 3 ans ½ ans de développement.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    D'accord merci.
    Le mieux pour moi sera donc d'attendre la migration vers 16.04 qui ne devrait pas tarder.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 147
    Points : 88
    Points
    88
    Par défaut
    Bonjour,
    Tu peux essayer de virer la ligne qui exige gtk 3, j'ai survolé ton code ( je dis bien survolé) et je n'ai pas vu de commande typiquement gtk3. Il est possible que cela fonctionne.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Malheureusement non cela ne corrige pas le soucis.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2013, 02h19
  2. Réponses: 2
    Dernier message: 18/12/2008, 14h15
  3. Réponses: 2
    Dernier message: 09/02/2008, 01h23
  4. Réponses: 3
    Dernier message: 24/01/2008, 19h09
  5. TreeView dans une fenêtre de dialogue
    Par Bilouzzz dans le forum MFC
    Réponses: 3
    Dernier message: 16/09/2005, 15h55

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