1

我正在编写一个简单的文本编辑器,因此我试图在关闭应用程序之前检查未保存的更改。现在我知道它必须是带有“删除事件”的东西,并且通过谷歌搜索我找到了一种方法,但它给出了一个错误。

这是我的代码:

__gsignals__ = {
  "delete-event" : "override"
}

def do_delete(self, widget, event):
    print 'event overriden'
    tabsNumber = self.handler.tabbar.get_n_pages()
    #self.handler.tabbar.set_current_page(0)
    for i in range(tabsNumber, 0):
        doc = self.handler.tabbar.docs[i]
        lines = self.handler.tabbar.lineNumbers[i]
        self.handler.tabbar.close_tab(doc, lines)

#        if self.handler.tabbar.get_n_pages() == 0:
#            self.destroy_app()

  def destroy_app(self):
    gtk.main_quit()

这是我得到的错误:

TypeError: Gtk.Widget.delete_event() 参数 1 必须是 gtk.Widget,而不是 gtk.gdk.Event

正确的方法是什么?

4

1 回答 1

4

我找到了答案,

self.connect('delete-event', self.on_delete_event)

__gsignals__ = {
    "delete-event" : "override"
}
def on_delete_event(event, self, widget):
    tabsNumber = self.handler.tabbar.get_n_pages()
    #self.handler.tabbar.set_current_page(0)
    for i in range(tabsNumber, 0):
        doc = self.handler.tabbar.docs[i]
        lines = self.handler.tabbar.lineNumbers[i]
            self.handler.tabbar.close_tab(doc, lines)
    self.hide()
    self.destroy_app()
    return True

关键在return True. 它阻止了默认处理程序的发生,并且以某种方式不再出现错误。

于 2012-04-13T19:48:57.217 回答