PyGTK - Paned 类

  • 简述

    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, child调整窗格小部件的大小时应调整大小。如果shrinkTrue, child可以小于其最小尺寸要求。
    • Paned.pack2(child, resize, shrink) - 这设置了两个窗格之间分隔线的位置。
    两种类型的 Paned 小部件都会发出以下信号 -
    accept-position 这是发出时paned具有焦点,导致具有焦点的子小部件被激活。
    cancel-position Esc键被按下时paned有重点。
    move-handle 这是发出时paned有焦点并且分隔符被移动。
  • 例子

    以下示例使用 gtk.Hpaned 小部件。在左窗格中,添加了一个 TreeView 小部件,在右窗格中,有一个 TextView 小部件。当 TreeView 中的任何一行被选中时,它会发出 row_activated 信号,该信号连接到一个回调函数。这on_activated()function检索行的文本并显示在文本视图面板中。
    观察代码 -
    
    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 小部件演示