ComboBoxText в Glade / GTK + 3 / Python - исчезает при отображении во второй раз

Я пытаюсь реализовать выпадающий список в приложении Ubuntu, используя Glade (GTK + 3) и Python. Я могу получить ComboBoxText для отображения, заполненный строками. Однако, когда я закрываю окно, в котором оно находится, а затем снова открываю его, ящика со списком уже нет, просто совершенно пустое окно.

Я добавил рассматриваемый виджет ComboBoxText в окно в Glade. Затем я добавил этот код в свою программу на 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() 

Я даже попытался уничтожить виджет, чтобы посмотреть, поможет ли это:

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

РЕДАКТИРОВАТЬ:

У меня есть с тех пор попробовал некоторый альтернативный код, который включал объект CellRendererText, но все же не повезло.

Это мои источники (к сожалению, я не могу связать их со всеми, так как мне не хватает репутации):

Я создал Gtk.ListStore (), затем я создал Gtk. CellRendererText (), затем я создал Gtk.ComboBox (). Все это соответствовало примеру 13.3 здесь .

1110 Ничего не работает. Когда я открываю окно со списком во второй раз, это просто пустое окно. Может кто-нибудь помочь, пожалуйста?

1
задан 16 April 2013 в 02:06

1 ответ

Проблема заключается в окне.

Вы должны реализовать обратный вызов для сигнала 'delete-event' виджета Window.

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

Этот обратный вызов скрывает окно и возвращает значение True, поэтому событие не распространяется дальше (т. Е. Окно не уничтожается, включая ваш ComboBox).

0
ответ дан 16 April 2013 в 02:06

Другие вопросы по тегам:

Похожие вопросы: