PyGTK - 面板類



Paned 類是用於顯示兩個可調整面板的部件的基類,這些面板可以水平排列(gtk.Hpaned)或垂直排列(gtk.Vpaned)。子部件可以透過使用 pack1() 和 pack2() 方法新增到面板中。

Paned 部件在兩個面板之間繪製一個分隔線滑塊,並提供一個控制代碼來調整它們的相對寬度/高度。如果面板內子部件的 resize 屬性設定為 True,它將根據面板的大小調整大小。

以下方法可用於 HPaned 和 VPaned 類:

  • Paned.add1(child) - 將由child指定的部件新增到頂部或左側面板

  • Paned.add2(child) - 將由child指定的部件新增到底部或右側面板。

  • Paned.pack1(child, resize, shrink) - 將由child指定的部件新增到頂部或左側面板,並帶引數。如果resizeTrue,則當調整 Paned 部件大小時,應調整child的大小。如果shrinkTrue,則child可以比其最小尺寸請求更小。

  • Paned.pack2(child, resize, shrink) - 設定兩個面板之間分隔線的的位置。

兩種型別的 Paned 部件都發出以下訊號:

accept-position paned獲得焦點並導致具有焦點的子部件被啟用時發出。
cancel-position paned獲得焦點時按下Esc鍵時發出。
move-handle paned獲得焦點並移動分隔線時發出。

示例

以下示例使用 gtk.Hpaned 部件。在左側面板中,添加了一個 TreeView 部件,在右側面板中,有一個 TextView 部件。當選擇 TreeView 中的任何行時,它將發出 row_activated 訊號,該訊號連線到回撥函式。on_activated()函式檢索行的文字並在文字視圖面板中顯示。

觀察程式碼:

import gtk, gobject

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("HPaned widget Demo")
      self.set_default_size(250, 200)
      vp = gtk.HPaned()
      sw = gtk.ScrolledWindow()
      sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 
		
      tree = gtk.TreeView()
      languages = gtk.TreeViewColumn()
      languages.set_title("GUI Toolkits")
      cell = gtk.CellRendererText()
      languages.pack_start(cell, True)
      languages.add_attribute(cell, "text", 0)
      treestore = gtk.TreeStore(str)
      it = treestore.append(None, ["Python"])
		
      treestore.append(it, ["PyQt"])
      treestore.append(it, ["wxPython"])
      treestore.append(it, ["PyGTK"])
      treestore.append(it, ["Pydide"])
		
      it = treestore.append(None, ["Java"])
      treestore.append(it, ["AWT"])
      treestore.append(it, ["Swing"])
      treestore.append(it, ["JSF"])
      treestore.append(it, ["SWT"])
		
      tree.append_column(languages)
      tree.set_model(treestore)
		
      vp.add1(tree)
      self.tv = gtk.TextView()
      vp.add2(self.tv)
      vp.set_position(100)
      self.add(vp)
		
      tree.connect("row-activated", self.on_activated)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
		
   def on_activated(self, widget, row, col):
      model = widget.get_model()
      text = model[row][0]
      print text
		
      buffer = gtk.TextBuffer()
      buffer.set_text(text+" is selected")
      self.tv.set_buffer(buffer)

if __name__ == '__main__':
   PyApp()
   gtk.main()

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

Hpaned Widget Demo
廣告

© . All rights reserved.