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()

以上程式碼將生成以下輸出:

ScrolledWindow
廣告

© . All rights reserved.