- PyGTK 教程
- PyGTK - 首頁
- PyGTK - 簡介
- PyGTK - 環境
- PyGTK - Hello World
- PyGTK - 重要類
- PyGTK - Window 類
- PyGTK - Button 類
- PyGTK - Label 類
- PyGTK - Entry 類
- PyGTK - 訊號處理
- PyGTK - 事件處理
- PyGTK - 容器
- PyGTK - Box 類
- PyGTK - ButtonBox 類
- PyGTK - Alignment 類
- PyGTK - EventBox 類
- PyGTK - Layout 類
- PyGTK - ComboBox 類
- PyGTK - ToggleButton 類
- PyGTK - CheckButton 類
- PyGTK - RadioButton 類
- PyGTK - MenuBar、Menu 和 MenuItem
- PyGTK - Toolbar 類
- PyGTK - Adjustment 類
- PyGTK - Range 類
- PyGTK - Scale 類
- PyGTK - Scrollbar 類
- PyGTK - Dialog 類
- PyGTK - MessageDialog 類
- PyGTK - AboutDialog 類
- PyGTK - 字型選擇對話方塊
- PyGTK - 顏色選擇對話方塊
- PyGTK - 檔案選擇對話方塊
- PyGTK - Notebook 類
- PyGTK - Frame 類
- PyGTK - AspectFrame 類
- PyGTK - TreeView 類
- PyGTK - Paned 類
- PyGTK - Statusbar 類
- PyGTK - ProgressBar 類
- PyGTK - Viewport 類
- PyGTK - Scrolledwindow 類
- PyGTK - Arrow 類
- PyGTK - Image 類
- PyGTK - DrawingArea 類
- PyGTK - SpinButton 類
- PyGTK - Calendar 類
- PyGTK - Clipboard 類
- PyGTK - Ruler 類
- PyGTK - 超時
- PyGTK - 拖放
- PyGTK 有用資源
- PyGTK - 快速指南
- PyGTK - 有用資源
- PyGTK - 討論
PyGTK - EventBox 類
PyGTK 工具包中的一些部件沒有自己的視窗。這些無視窗部件無法接收事件訊號。例如,標籤這種部件,如果放在 EventBox 中,就可以接收訊號。
EventBox 是一個不可見的容器,它為無視窗部件提供視窗。它有一個簡單的建構函式,沒有任何引數:
gtk.EventBox()
示例
在下面的示例中,兩個 gtk.EventBox 部件被放置在頂級視窗中。在每個 EventBox 內部,添加了一個標籤。現在,EventBox 連線到一個回撥函式,以處理其上的 button_press_event 事件。由於 EventBox 本身是不可見的,因此實際上事件發生在嵌入的標籤上。因此,當我們點選任何標籤時,都會呼叫相應的回撥函式。
觀察程式碼:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("EventBox demo")
self.set_size_request(200,100)
self.set_position(gtk.WIN_POS_CENTER)
fixed = gtk.Fixed()
event1 = gtk.EventBox()
label1 = gtk.Label("Label 1")
event1.add(label1)
fixed.put(event1, 80,20)
event1.connect("button_press_event",self.hello1)
event2 = gtk.EventBox()
label2 = gtk.Label("Label 2")
event2.add(label2)
event2.connect("button_press_event",self.hello2)
fixed.put(event2, 80,70)
self.add(fixed)
self.connect("destroy", gtk.main_quit)
self.show_all()
def hello1(self, widget, event):
print "clicked label 1"
def hello2(self, widget, event):
print "clicked label 2"
PyApp()
gtk.main()
以上程式碼生成以下輸出:
當在控制檯中點選“標籤 1”時,會列印訊息“clicked label 1”。類似地,當點選“標籤 2”時,會列印訊息“clicked label 2”。
廣告