- PyGTK 教程
- PyGTK - 首頁
- PyGTK - 簡介
- PyGTK - 環境配置
- PyGTK - Hello World
- PyGTK - 重要類
- PyGTK - 視窗類 (Window Class)
- PyGTK - 按鈕類 (Button Class)
- PyGTK - 標籤類 (Label Class)
- PyGTK - 輸入框類 (Entry Class)
- PyGTK - 訊號處理
- PyGTK - 事件處理
- PyGTK - 容器
- PyGTK - 箱式容器類 (Box Class)
- PyGTK - 按鈕盒類 (ButtonBox Class)
- PyGTK - 對齊類 (Alignment Class)
- PyGTK - 事件盒類 (EventBox Class)
- PyGTK - 佈局類 (Layout Class)
- PyGTK - 組合框類 (ComboBox Class)
- PyGTK - 切換按鈕類 (ToggleButton Class)
- PyGTK - 複選框類 (CheckButton Class)
- PyGTK - 單選按鈕類 (RadioButton Class)
- PyGTK - 選單欄、選單和選單項 (MenuBar, Menu & MenuItem)
- PyGTK - 工具欄類 (Toolbar Class)
- PyGTK - 調整器類 (Adjustment Class)
- PyGTK - 範圍類 (Range Class)
- PyGTK - 縮放類 (Scale Class)
- PyGTK - 捲軸類 (Scrollbar Class)
- PyGTK - 對話方塊類 (Dialog Class)
- PyGTK - 訊息對話方塊類 (MessageDialog Class)
- PyGTK - 關於對話方塊類 (AboutDialog Class)
- PyGTK - 字型選擇對話方塊
- PyGTK - 顏色選擇對話方塊
- PyGTK - 檔案選擇對話方塊
- PyGTK - 筆記本類 (Notebook Class)
- PyGTK - 框架類 (Frame Class)
- PyGTK - 帶長寬比的框架類 (AspectFrame Class)
- PyGTK - 樹檢視類 (TreeView Class)
- PyGTK - 面板類 (Paned Class)
- PyGTK - 狀態列類 (Statusbar Class)
- PyGTK - 進度條類 (ProgressBar Class)
- PyGTK - 視口類 (Viewport Class)
- PyGTK - 滾動視窗類 (Scrolledwindow Class)
- PyGTK - 箭頭類 (Arrow Class)
- PyGTK - 圖片類 (Image Class)
- PyGTK - 繪圖區類 (DrawingArea Class)
- PyGTK - 旋轉按鈕類 (SpinButton Class)
- PyGTK - 日曆類 (Calendar Class)
- PyGTK - 剪貼簿類 (Clipboard Class)
- PyGTK - 標尺類 (Ruler Class)
- PyGTK - 超時 (Timeout)
- PyGTK - 拖放 (Drag and Drop)
- PyGTK 有用資源
- PyGTK - 快速指南
- PyGTK - 有用資源
- PyGTK - 討論
PyGTK - 事件處理
除了訊號機制,視窗系統事件也可以連線到回撥函式。視窗大小調整、按鍵按下、滾動事件等是一些常見的視窗系統事件。這些事件被報告給應用程式的主迴圈。從那裡,它們透過訊號傳遞給回撥函式。
以下列出了一些系統事件:
- button_press_event
- button_release_event
- scroll_event
- motion_notify_event
- delete_event
- destroy_event
- expose_event
- key_press_event
- key_release_event
connect() 方法用於將事件與回撥函式關聯,語法如下:
Object.connect(name, function, data)
這裡,name 代表要捕獲的事件名稱對應的字串。而 function 是當事件發生時要呼叫的 回撥 函式的名稱。Data 是要傳遞給回撥函式的引數。
因此,以下程式碼連線一個 Button 小部件並捕獲 button_press 事件:
self.btn.connect("button_press_event", self.hello)
hello() 函式的原型如下:
def hello(self,widget,event):
示例
以下是按鈕事件處理器的程式碼:
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("button_press_event", 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,event):
print "hello",self.entry.get_text()
PyApp()
gtk.main()
執行以上程式碼後,控制檯將顯示以下輸出:
Hello TutorialsPoint
廣告