ComboBoxText no Glade / GTK + 3 / Python - desaparece quando exibido 2ª vez

1

Estou tentando implementar uma lista suspensa em um aplicativo do Ubuntu usando o Glade (GTK + 3) e o Python. Eu posso obter o ComboBoxText para exibir, preenchido com seqüências de caracteres. No entanto, quando eu fecho a janela, ela é contida e reaberta, a caixa de combinação não está lá, apenas uma janela completamente em branco.

Eu adicionei o widget ComboBoxText em questão a uma janela no Glade. Eu adicionei esse código no meu programa em Python:

def on_button_edit_clicked(self, widget):
    """ display list of events already stored, and allow deletion """   

    self.combo = self.builder.get_object('combo_box')
    self.store = Gtk.ListStore(str)

    self.store.append(['hello'])
    self.store.append(['goodbye'])
    self.combo.set_model(self.store)

   event_editor = self.builder.get_object("event_editor")
   event_editor.show() 

Eu até tentei destruir o widget para ver se isso ajuda:

def on_event_editor_destroy(self, widget):
    self.combo.destroy()
    self.store = Gtk.ListStore(str)
    self.combo.set_model(self.store)

EDITAR:

Eu já tentei alguns códigos alternativos, que incluíam um objeto CellRendererText, mas ainda sem sorte.

Estas são as minhas fontes (infelizmente não consigo linkar todas elas porque não tenho reputação suficiente):

Eu criei um Gtk.ListStore (), então criei um Gtk.CellRendererText (), então criei um Gtk.ComboBox (). Isso foi tudo em linha com o exemplo 13.3 aqui .

Nada funciona. Quando abro a janela da combobox pela segunda vez, é apenas uma janela em branco. Alguém pode ajudar por favor?

    
por Jon Hudson 16.04.2013 / 00:06

1 resposta

2

O problema está na janela.

Você deve implementar um retorno de chamada para o sinal 'evento de exclusão' do widget da janela.

def on_event_editor_delete_event(self, widget, event):
    self.event_editor.hide()
    return True

Este retorno de chamada oculta a Janela e retorna Verdadeiro para que o evento não seja propagado (isto é, a Janela não é destruída, incluindo seu ComboBox).

    
por tectux 09.05.2013 / 16:48