亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 6149 | 回復: 1
打印 上一主題 下一主題

[有趣的Python 6] PyGtk中窗口的事件處理 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-06-08 08:31 |只看該作者 |倒序瀏覽
還記得我們上次的PyGtk的程序么。我們顯示了一個光禿禿的窗口。而且不能關(guān)閉!呵呵。這樣太不象話了。我們來看一個復雜一點的例子,順便看一下PyGtk的事件處理機制:

  1. import gtk

  2. class Shell:
  3.     def __init__(self):
  4.         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  5.         self.window.connect("destroy", self.destroy_event, None)
  6.         self.window.connect("delete_event", self.delete_event, None)
  7.         self.initContainer()
  8.         self.window.add(self.container)
  9.         self.container.show()
  10.         self.window.show()

  11.     def initContainer(self):
  12.         self.helloButton = gtk.Button("Hello World")
  13.         self.helloButton.connect("clicked", self.hello, None)

  14.         self.quitButton = gtk.Button("Quit")
  15.         self.quitButton.connect_object("clicked", gtk.Widget.destroy, self.window)
  16.         self.container = gtk.HBox()
  17.         self.container.add(self.helloButton)
  18.         self.container.add(self.quitButton)
  19.         self.helloButton.show()
  20.         self.quitButton.show()
  21.         return self.container

  22.     def delete_event(self, widget, event, data = None):
  23.         print "delete event caught"
  24.         return False

  25.     def destroy_event(self, widget, event, data = None):
  26.         print "destroy event caught"
  27.         gtk.main_quit()

  28.     def hello(self, widget, event, data=None):
  29.         print "Hello PyGtk World!"

  30.     def main(self):
  31.         gtk.main()

  32. print __name__
  33. if __name__ == "__main__":
  34.     shell = Shell()
  35.     shell.main()
復制代碼

如果有Gtk編程經(jīng)驗的話,可以很容易讀懂這段代碼。其實Gtk的機制很簡單,就是在某個widget上,為某一個特定的事件注冊一個callback函數(shù)。當事件發(fā)生時,對應的callback事件會被調(diào)用。
對于delete_event,這個事件通常是由window manager來發(fā)出,點擊窗口右上教的"X"就會觸發(fā)這個事件。
對于connect_object(event, callback, widget)這個函數(shù),其效果是這樣的:

  1. callback(widget)
復制代碼

會被調(diào)用。
在本例子里,gtk.Widget.destroy(self.window)會被調(diào)用。而gtk.Widget.destroy(widget)的作用是向widget發(fā)出destroy信號。如果widget注冊了這個signal的callback,本例中是Shell.destroy_event()函數(shù)。結(jié)果是程序的退出。

論壇徽章:
0
2 [報告]
發(fā)表于 2005-07-06 11:41 |只看該作者

[有趣的Python 6] PyGtk中窗口的事件處理

如何在一個notebook的頁面內(nèi)精確定位

notebook分為標簽和頁面兩項,如何將他們標識出來,這樣才能完成對他們的操作
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP