📜  PyGTK-Box类

📅  最后修改于: 2020-11-08 07:48:47             🧑  作者: Mango


gtk.Box类是定义容器功能的抽象类,在该容器中将小部件放置在矩形区域中。 gtk.HBox和gtk.VBox小部件是从中派生的。

gtk.Hbox中的子窗口小部件在同一行中水平排列。另一方面,gtk.VBox的子窗口小部件在同一列中垂直排列。

gtk.Box类使用以下构造函数-

gtk.Box(homogenous = True, spacing = 0)

默认情况下,homogeneous属性设置为True。结果,所有子窗口小部件都被分配了相等的分配。

gtk.Box使用打包机制根据特定位置(参考开始或结束)将子小部件放置在其中。 pack_start()方法将小部件从头到尾放置。相反,pack_end()方法将小部件从头到尾放置。或者,您可以使用类似于pack_start()的add()方法。

以下方法可用于gtk.HBox和gtk.VBox-

  • gtk_box_pack_start()

  • gtk_box_pack_end()

gtk_box_pack_start()

此方法将孩子添加到盒子中,并参考盒子的开始包装-

pack_start(child, expand = True, fill = True, padding = 0)

以下是参数-

  • -这是要添加到框的小部件对象

  • 扩大-这是设置为true,如果孩子是在框中给予额外的空间。多余的空间在所有子窗口小部件之间分配。

  • fill-如果为True,则将为子级分配额外的空间。否则,此参数用作填充。

  • 填充-这是框中小部件之间的像素间距

gtk_box_pack_end()

这会将子代添加到框中,并以框的结尾为参考。

pack_end (child, expand = True, fill = True, padding = 0)

以下是参数-

  • -这是要添加的小部件对象

  • 扩大-这是设置为true,如果孩子是在框中给予额外的空间。多余的空间分配在所有子窗口小部件之间。

  • fill-如果为True,则将为子级分配额外的空间,否则将其用作填充。

  • padding-这是框中小部件之间的像素间隔。

set_spacing(spacing)是用于设置要放置在框的子级之间的像素数的函数。

方法add(widget)从gtk.Container类继承。它将小部件添加到容器中。可以使用此方法代替pack_start()方法。

在下面给出的示例中,顶级窗口包含一个垂直框(gtk.VBox对象框)。它又有一个VBox对象vb和HBox对象hb。在上方的框中,垂直放置标签,条目小部件和按钮。在下面的框中,垂直放置另一组标签,条目和按钮。

观察以下代码-

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
         self.set_title("Box demo")
        
      box = gtk.VBox()
      vb = gtk.VBox()
      lbl = gtk.Label("Enter name")
        
      vb.pack_start(lbl, expand = True, fill = True, padding = 10)
      text = gtk.Entry()
        
      vb.pack_start(text, expand = True, fill = True, padding = 10)
      btn = gtk.Button(stock = gtk.STOCK_OK)
        
      vb.pack_start(btn, expand = True, fill = True, padding = 10)
      hb = gtk.HBox()
        
      lbl1 = gtk.Label("Enter marks")
      hb.pack_start(lbl1, expand = True, fill = True, padding = 5)
      text1 = gtk.Entry()
        
      hb.pack_start(text1, expand = True, fill = True, padding = 5)
      btn1 = gtk.Button(stock = gtk.STOCK_SAVE)
        
      hb.pack_start(btn1, expand = True, fill = True, padding = 5)
      box.add(vb)
      box.add(hb)
      self.add(box)
      self.show_all()
PyApp()
gtk.main()

上面的代码将产生以下输出-

盒式演示