我正在编写一个简单的文本编辑器,因此我尝试在关闭应用程序之前检查未保存的更改。现在我知道它必须是'删除事件',并通过谷歌搜索我找到了一种方法,但它给出了一个错误。
这是我的代码:
__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
这样做的正确方法是什么?
答案 0 :(得分:2)
我找到了答案,
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
。它可以防止发生默认处理程序,并且不会再以错误的方式显示错误。