1

私は単純なテキスト エディターをコーディングしているので、アプリケーションを閉じる前に保存されていない変更を確認しようとしています。これで、「delete-event」を使用する必要があることがわかりました。グーグルで検索すると方法が見つかりましたが、エラーが発生します。

これは私のコードです:

__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.gdk.Event ではなく、gtk.Widget でなければなりません

それを行う正しい方法は何ですか?

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 に答える