Wednesday, July 23, 2008

Python Pygtk and Glade Event handle

使用Glade layout出想要的GUI介面之後,要處理的就是一些Button,像是Toolbar Button、Radio Button等的事件觸發。如下圖顯示,我們可以在Glade Singal Tab裡面,選擇GtkToolButton的Clicked Singal,然後填入自己想定義的Function Name。

之後在Python銜接的地方如下:

  1.     def __init__(self):
  2.         #Set Glade File
  3.         self.gladefile = "EPLab_Manager.glade"
  4.  
  5.         #window Title Name
  6.         self.windowname = "EPL Manager"
  7.         self.Win = gtk.glade.XML(self.gladefile,self.windowname)
  8.  
  9.         #Create dictionary and connect to event handle function
  10.         dic = {\
  11.             "on_manager_destroy" : \
  12.             self.manager_quit,
  13.             "on_tb2_version_clicked" : \
  14.             self.on_toolbar_version_clicked
  15.         }
  16.  
  17.         self.Win.signal_autoconnect(dic)
  18.  
  19.  
  20.     def on_toolbar_version_clicked(self,widget):
  21.         print 'on_toolbar_version_clicked\n'
  22.      

如此就能連接GUI的設定與Event Handler,當使用者按下設定好的Toolbar Button,便會trigger on_toolbar_version_clicked這個function運作。但是不知道哪理出問題,如果想要使用GUI上面close按鈕來關閉視窗,一定要用gtk.main_quit()來離開整個程式。因此上述程式的on_manager_destroy就是連接整個GUI GtkObjec的destroy singal。另外,想要不使用Glade的方式來連接,也可以透過程式直接connect。
  1.     self.Win.single_connect("destray",gtk.main_quit)

這種方式也可以。

HEMiDEMi Technorati Del.icio.us MyShare個人書籤 Yahoo

0 意見: