#!/usr/bin/env python # -*- coding: utf-8 -*- import pygtk pygtk.require('2.0') import gtk class DeepFuture: def blogurlshow(self,widget,data=None): print("我的博客:http://blog.csdn.net/u010255642") def delwin_event(self,widget,event,data=None): #如果你在"delete_event"事件处理中,返回FALSE,GTK会继续发射这个信号,以供destroy,否则返回TRUE,表示这个信号已经被处理,不需要再处理了,也不需要再发射这个信号了,这意味着你不能destroy窗口。 print("delete event!") return False def destroy_win(self,widget,data=None): #处理窗口销毁信号 print("destroy event!") gtk.main_quit() def __init__(self): #创建一个新窗口 self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) #指定信号与相关处理事件 self.window.connect("delete_event", self.delwin_event) self.window.connect("destroy", self.destroy_win) self.window.set_border_width(15) self.button = gtk.Button("显示我的博客") self.button.connect("clicked", self.blogurlshow, None) self.button.connect_object("clicked", gtk.Widget.destroy,self.window) self.window.add(self.button) #显示按钮和相关窗口 self.button.show() self.window.show() def main(self): gtk.main() if __name__ == "__main__": deep=DeepFuture() deep.main()
"delete_event" 和 "destroy" 信号被捕捉,"delete_event" 在我们使用窗口管理器关闭这个窗口后,或我们调用GtkWidget destroy() 后产生,delete_event"处理中,返回 FALSE,"destroy" 被捕捉:
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)