- PyGTK 教程
- PyGTK - 首頁
- PyGTK - 簡介
- PyGTK - 環境
- PyGTK - Hello World
- PyGTK - 重要類
- PyGTK - 視窗類
- PyGTK - 按鈕類
- PyGTK - 標籤類
- PyGTK - 輸入框類
- PyGTK - 訊號處理
- PyGTK - 事件處理
- PyGTK - 容器
- PyGTK - 箱式容器類
- PyGTK - 按鈕盒類
- PyGTK - 對齊類
- PyGTK - 事件盒類
- PyGTK - 佈局類
- PyGTK - 組合框類
- PyGTK - 切換按鈕類
- PyGTK - 複選框類
- PyGTK - 單選按鈕類
- PyGTK - 選單欄、選單和選單項
- PyGTK - 工具欄類
- PyGTK - 調整類
- PyGTK - 範圍類
- PyGTK - 刻度類
- PyGTK - 捲軸類
- PyGTK - 對話方塊類
- PyGTK - 訊息對話方塊類
- PyGTK - 關於對話方塊類
- PyGTK - 字型選擇對話方塊
- PyGTK - 顏色選擇對話方塊
- PyGTK - 檔案選擇對話方塊
- PyGTK - 筆記本類
- PyGTK - 框架類
- PyGTK - 帶邊框的框架類
- PyGTK - 樹形檢視類
- PyGTK - 分割窗格類
- PyGTK - 狀態列類
- PyGTK - 進度條類
- PyGTK - 視口類
- PyGTK - 滾動視窗類
- PyGTK - 箭頭類
- PyGTK - 圖片類
- PyGTK - 繪圖區域類
- PyGTK - 旋轉按鈕類
- PyGTK - 日曆類
- PyGTK - 剪貼簿類
- PyGTK - 標尺類
- PyGTK - 超時
- PyGTK - 拖放
- PyGTK 有用資源
- PyGTK - 快速指南
- PyGTK - 有用資源
- PyGTK - 討論
PyGTK - 對話方塊類
對話方塊小部件通常用作父視窗頂部的彈出視窗。對話方塊的目的是從使用者那裡收集一些資料並將其傳送到父視窗。對話方塊可以是模態的(它阻塞父框架)或非模態的(對話方塊框架可以繞過)。
PyGTK 庫的對話方塊小部件是一個垂直分割的視窗。在其頂部部分,有一個 gtk.VBox,其中包含打包的標籤或輸入框小部件。底部部分稱為 action_area,其中放置了一個或多個按鈕。兩個區域由 gtk.HSeparator 分隔。
gtk.Dialog 類具有以下建構函式:
dlg = gtk.Dialog (Title = None, parent = None, flags = 0, buttons = None)
其中,
標題 - 是出現在對話方塊小部件標題欄中的文字。
父級 - 是對對話方塊彈出的頂級視窗的引用。
標誌 - 定義控制對話方塊操作的常量。定義的常量為:
| gtk.DIALOG_MODAL | 如果設定,則對話方塊捕獲所有鍵盤事件 |
| gtk.DIALOG_DESTROY_WITH_PARENT | 如果設定,則當父級被銷燬時,對話方塊也會被銷燬。 |
| gtk.DIALOG_NO_SEPARATOR | 如果設定,則按鈕上方沒有分隔線。 |
什麼是按鈕?
按鈕是一個元組物件,包含 gtk.Button 與庫存 ID(或文字)及其響應 ID 的對。
響應 ID 可以是任何數字或預定義的響應 ID 常量之一:
- gtk.RESPONSE_NONE
- gtk.RESPONSE_REJECT
- gtk.RESPONSE_ACCEPT
- gtk.RESPONSE_DELETE_EVENT
- gtk.RESPONSE_OK
- gtk.RESPONSE_CANCEL
- gtk.RESPONSE_CLOSE
- gtk.RESPONSE_YES
- gtk.RESPONSE_NO
- gtk.RESPONSE_APPLY
- gtk.RESPONSE_HELP
gtk.Dialog 類的重要方法如下:
add_button() - 在 action_area 中新增一個按鈕,該按鈕的文字由 button_text 指定(或庫存按鈕,如果 button_text 是庫存 ID)。
response() - 發出帶有 response_id 中指定值的“response”訊號。
run() - 顯示對話方塊並在 delete_event 發出時返回 response_id。
set_default_response() - 將對話方塊 action_area 中的最後一個小部件設定為具有指定 response_id 作為對話方塊的預設小部件。
gtk.Dialog 小部件發出以下訊號:
| 關閉 | 當對話方塊關閉時發出。 |
| 響應 | 當 action_area 小部件被啟用(按鈕“單擊”)、對話方塊接收 delete_event 或應用程式呼叫 response() 方法時發出。 |
對話方塊小部件 action_area 中的兩個按鈕使用庫存 ID gtk.STOCK.CANCEL 和 gtk.STOCK_OK。它們分別與響應 ID gtk.RESPONSE_REJECT 和 gtk.RESPONSE_ACCEPT 關聯。按下任何按鈕時,對話方塊都會關閉。run() 方法返回相應的響應 ID,可用於進一步處理。
以下程式碼顯示一個包含按鈕的頂級 gtk.Window。當單擊按鈕時,會出現一個帶有標籤和兩個按鈕的對話方塊。
示例
觀察以下程式碼:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Dialog Demo")
self.set_default_size(250, 200)
fixed = gtk.Fixed()
btn = gtk.Button("Show")
btn.connect("clicked",self.show_sialog)
fixed.put(btn,100,100)
self.add(fixed)
self.connect("destroy", gtk.main_quit)
self.show_all()
def show_sialog(self, widget, data=None):
dialog = gtk.Dialog("My dialog",
self,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
label = gtk.Label("Simple dialog")
dialog.vbox.add(label)
label.show()
res = dialog.run()
print res
dialog.destroy()
if __name__ == '__main__':
PyApp()
gtk.main()
以上程式碼產生以下輸出:
預配置對話方塊小部件
PyGTK API 有許多預配置的對話方塊小部件:
- MessageDialog
- AboutDialog
- ColorSelectionDialog
- FontSelectionDialog
- FileChooserDialog
為了演示 PyGTK 中上述標準對話方塊的功能,在以下程式中,將一個選單與每個選單項(單擊時呼叫一個對話方塊)放在 gtk.Window 中。列出了響應於啟用每個選單項訊號的回撥函式。您還可以瞭解為每種型別的對話方塊小部件提供的解釋。
示例
觀察以下程式碼:
import gtk, pango
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Dialog Boxes")
self.set_default_size(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
mb = gtk.MenuBar()
menu1 = gtk.Menu()
file = gtk.MenuItem("_File")
file.set_submenu(menu1)
msg = gtk.MenuItem("MessageDialog")
menu1.append(msg)
abt = gtk.MenuItem("AboutDialog")
menu1.append(abt)
colo = gtk.MenuItem("colorDialog")
menu1.append(colo)
font = gtk.MenuItem("FontSelectionDialog")
menu1.append(font)
fl = gtk.MenuItem("FileChooserDialog")
menu1.append(fl)
mb.append(file)
vbox = gtk.VBox(False, 2)
vbox.pack_start(mb, False, False, 0)
self.add(vbox)
self.text = gtk.Label("TutorialsPoint")
vbox.pack_start(self.text, True, True, 0)
msg.connect("activate",self.on_msgdlg)
abt.connect("activate",self.on_abtdlg)
font.connect("activate",self.on_fntdlg)
colo.connect("activate",self.on_color)
fl.connect("activate", self.on_file)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_msgdlg(self, widget):
#MessageDialog usage code
def on_abtdlg(self, widget):
#AboutDialog usage code
def on_fntdlg(self,widget):
#FontSelectionDialog usage code
def on_color(self, widget):
#ColorChooserDialog usage cde
Def on_file(self, widget):
#FileChooserDialog usage code
if __name__ == '__main__':
PyApp()
gtk.main()
以上程式碼將生成以下輸出: