Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/04/2017, à 17:28

romaric.crailox

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 :

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.Window.add(self.notebook)

        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 14.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...

Hors ligne

#2 Le 04/04/2017, à 10:10

romaric.crailox

Re : Gtk 3.0 : fenêtre avec treeview dans un expander

Première correction d'erreur :

la ligne "self.Window.add(self.notebook)" doit être supprimé, puisqu'elle ajoute 2 fois le notebook.

Cependant cela ne permet pas de correctement afficher le treeview dans l'expander... Si quelqu'un a une idée.

Dernière modification par romaric.crailox (Le 04/04/2017, à 10:18)

Hors ligne

#3 Le 04/04/2017, à 15:33

romaric.crailox

Re : Gtk 3.0 : fenêtre avec treeview dans un expander

Il semblerai que ce code fonctionne sur Ubuntu 16.04...
Je ne comprend pas, la ligne

gi.require_version('Gtk', '3.0')

ne garantie pas que la même version de gtk soit utilisée?

Hors ligne