#1 Le 03/04/2017, à 16: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, à 09: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, à 09:18)
Hors ligne
#3 Le 04/04/2017, à 14: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