Я пытаюсь реализовать выпадающий список в приложении 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 Ничего не работает. Когда я открываю окно со списком во второй раз, это просто пустое окно. Может кто-нибудь помочь, пожалуйста?
Проблема заключается в окне.
Вы должны реализовать обратный вызов для сигнала 'delete-event' виджета Window.
def on_event_editor_delete_event(self, widget, event):
self.event_editor.hide()
return True
Этот обратный вызов скрывает окно и возвращает значение True, поэтому событие не распространяется дальше (т. Е. Окно не уничтожается, включая ваш ComboBox).