- 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 - 滾動視窗類
建立滾動視窗是為了訪問比父視窗區域更大的其他部件。一些部件,如 TreeView 和 TextView,本身就支援滾動。對於其他部件,如 Label 或 Table,則需要提供一個視口。
gtk.ScrolledWindow 類的建構函式使用以下語法:
sw = gtk.ScrolledWindow(hadj, vadj)
以下是 gtk.ScrolledWindow 類的常用方法:
ScrolledWindow.set_hadjustment() - 設定水平調整為 gtk.Adjustment 物件。
ScrolledWindow.set_vadjustment() - 設定垂直調整為 gtk.Adjustment 物件。
ScrolledWindow.set_Policy (hpolicy, vpolicy) - 設定 "hscrollbar_policy" 和 "vscrollbar_policy" 屬性。可以使用以下預定義常量之一:
gtk.POLICY_ALWAYS - 捲軸始終顯示。
gtk.POLICY_AUTOMATIC - 捲軸僅在需要時顯示,即內容大小大於視窗大小。
gtk.POLICY_NEVER - 捲軸從不顯示。
ScrolledWindow.add_with_viewport(child) - 此方法用於將不具備原生滾動功能的部件(由 child 指定)新增到滾動視窗中。這是一個便捷函式,等效於將 child 新增到 gtk.Viewport,然後將視口新增到滾動視窗。
以下程式碼在大小為 10x10 的 gtk.Table 物件周圍添加了一個滾動視窗。由於 Table 物件本身不支援自動調整,因此它被新增到一個視口中。
sw = gtk.ScrolledWindow() table = gtk.Table(10,10)
使用兩個巢狀迴圈新增 10 行 10 列。每個單元格中都放置一個 gtk.Button 部件。
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
現在,這個足夠大的表格與一個視口一起新增到滾動視窗中。
sw.add_with_viewport(table)
示例
觀察以下程式碼:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("ScrolledWindow and Viewport")
self.set_size_request(400,300)
self.set_position(gtk.WIN_POS_CENTER)
sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)
table.set_row_spacings(10)
table.set_col_spacings(10)
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
sw.add_with_viewport(table)
self.add(sw)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
以上程式碼將生成以下輸出: