A maneira como é feito na captura de tela que você postou é via TreeView e ListStore. Você desejará criar uma janela com o widget Grade dentro dela, criar um widget TreeView dentro dela e fornecer o conteúdo via ListStore. Depois disso, você pode anexar algum outro widget à direita usando grid.attach_next_to(self.some_other_widget, view, Gtk.PositionType.RIGHT, 2, 1)
. Nesse caso, o exemplo é um rótulo, mas você provavelmente poderia anexar um Gtk.Box dentro de outros widgets dentro dele.
Observe que este exemplo fornece o exemplo Gtk-3. PyGTK é para Gtk-2, que está lentamente se tornando cada vez menos difundido.
from gi.repository import Gtk
import sys
class MyWindow(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(self, title="Some Title", application=app)
self.set_default_size(100,100)
listmodel = Gtk.ListStore(str)
listmodel.append(['one'])
listmodel.append(['two'])
listmodel.append(['three'])
view = Gtk.TreeView(model=listmodel)
cell = Gtk.CellRendererText()
col = Gtk.TreeViewColumn("Column Header", cell, text=0)
view.append_column(col)
view.get_selection().connect("changed", self.on_changed)
self.label = Gtk.Label()
self.label.set_text("")
grid = Gtk.Grid()
grid.attach(view, 0, 0, 1, 1)
grid.attach_next_to(self.label, view, Gtk.PositionType.RIGHT, 2, 1)
self.add(grid)
def on_changed(self, selection):
model,iterator = selection.get_selected()
self.label.set_text("You selected "+model[iterator][0])
return True
class MyApplication(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_activate(self):
win = MyWindow(self)
win.show_all()
def do_startup(self):
Gtk.Application.do_startup(self)
app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
Por outro lado, provavelmente seria mais simples e mais fácil usar o Gtk.Notebook .
Veja para mais informações: