Glade / GTK+3 / Python 中的 ComboBoxText - 第二次显示时消失

Glade / GTK+3 / Python 中的 ComboBoxText - 第二次显示时消失

我正在尝试使用 Glade (GTK+3) 和 Python 在 Ubuntu 应用程序中实现下拉列表。我可以让 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 一致这里

什么都不起作用。当我第二次打开组合框窗口时,它只是一个空白窗口。有人能帮忙吗?

答案1

问题出在窗口上。

你应该实现一个回调'删除事件'窗口小部件的信号。

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

此回调隐藏窗口并返回 True,因此事件不会进一步传播(即窗口不会被破坏,包括您的 ComboBox)。

相关内容