- 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 - 訊號處理
與以順序方式執行的控制檯模式應用程式不同,基於 GUI 的應用程式是事件驅動的。gtk.main() 函式啟動一個無限迴圈。發生在 GUI 上的事件被傳遞到相應的回撥函式。
每個 PyGTK 小部件(派生自 GObject 類)都設計為響應一個或多個事件發出“訊號”。訊號本身不執行任何操作。相反,它“連線”到一個回撥函式。
一些訊號由小部件繼承,而一些訊號則是特定於小部件的。例如,"toggled" 訊號由 toggleButton 小部件發出。
訊號處理程式透過呼叫 gtk.widget 類的connect() 方法來設定。
handler_id = object.connect(name, func, func_data)
第一個引數name是一個包含要捕獲的訊號名稱的字串。
第二個引數func是捕獲訊號時要呼叫的回撥函式。
第三個引數func_data是要傳遞給此函式的資料。
處理程式 ID,用於唯一標識回撥方法。
例如,要在單擊按鈕時呼叫 onClicked() 函式,請使用以下語法:
btn.connect("clicked",onClicked,None)
onClicked() 函式定義如下:
def onClicked(widget, data=None):
如果回撥方法是物件方法,則它會接收 self 作為附加引數:
def onClicked(self, widget, data=None):
示例
在以下示例中,一個 Button 被新增到 gtk.Window 中。“Hello World”訊息在單擊按鈕時列印。
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Hello World in PyGTK")
self.set_default_size(400,300)
self.set_position(gtk.WIN_POS_CENTER)
self.label = gtk.Label("Enter name")
self.entry = gtk.Entry()
self.btn = gtk.Button("Say Hello")
self.btn.connect("clicked",self.hello)
fixed = gtk.Fixed()
fixed.put(self.label, 100,100)
fixed.put(self.entry, 100,125)
fixed.put(self.btn,100,150)
self.add(fixed)
self.show_all()
def hello(self,widget):
print "hello",self.entry.get_text()
PyApp()
gtk.main()
從 Python 提示符執行以上程式碼。將顯示以下輸出:
按下按鈕時,控制檯會顯示以下輸出:
Hello TutorialsPoint
廣告