O Gtk tem diferentes tipos de contêineres. No momento, você está trabalhando com um contêiner GtkBin , que é um tipo de contêiner que suporta apenas um único criança. Você precisa de um contêiner que suporte mais de um filho. Para fazer isso, basta criar um container de sua escolha e adicioná-lo à viewport (como um widget comum). Existem algumas opções aqui, e elas estão listadas na documentação Gtk sobre contêineres .
Uma maneira de fazer isso é com um GtkBox :
self.ui.labels = []
for titles in entries:
label = Gtk.Label()
self.ui.labels.append(label)
self.ui.viewport1.add(self.ui.labels[-1])
self.ui.paned1.show_all()
# First, we need to create a box to hold all our widgets
box = Gtk.Box()
box.set_orientation(Gtk.Orientation.VERTICAL)
# Now add our widgets to the box, one by one, from the bottom
box.add(Gtk.Label())
box.add(Gtk.Button())
box.add(Gtk.Entry())
# We need to add the box to the viewport
self.ui.viewport.add(box)
box.show_all()
Depois de pegar o jeito, você pode querer jogar com alguma outra funcionalidade. Em vez de adicionar widgets cegamente à caixa, as funções pack_start e pack_end para o GtkBox dão a você o controle de cada widget adicionado. Você pode definir se uma criança recebe todo o espaço disponível e quanto espaço colocar em volta dela. Em alguns casos, você pode estar interessado em GtkGrid , que é um contêiner mais poderoso que suporta várias linhas e colunas .