zoukankan      html  css  js  c++  java
  • lgob布局管理

    下面介绍几个常用的容器,包括 Hbox,VBox,Alignment ,Fixed,Table

    感觉gtk的容器挺不方便,而且每个容器添加子部件的函数名称都不同,不好记.

    效果图

    alignment 解释图一

    table解释图二

    上代码:

     1 require("lgob.gtk")
     2 require('lgob.gdk')
     3 
     4 window = gtk.Window.new()
     5 window:set('title', "lgob布局", 'window-position', gtk.WIN_POS_CENTER)
     6 window:set_size_request(280, 100)
     7 window:connect('delete-event', gtk.main_quit)
     8 
     9 --下面介绍几个常用的容器
    10 
    11 --水平盒和竖直盒容器 参数分别表示 子部件大小是否一致 子部件间隔
    12 hbox=gtk.HBox.new(false,3)
    13 vbox1=gtk.VBox.new(false,3)
    14 vbox2=gtk.VBox.new(false,3)
    15 
    16 --固定布局容器
    17 fix = gtk.Fixed.new()
    18 --对齐容器,devhelp给出 A widget which controls the alignment and size of its child
    19 --我感觉就是控制子部件之间的相对大小,如图1
    20 alignment=gtk.Alignment.new(1,0,0,0) --修改数值查看效果
    21 
    22 --表格容器 参数分别表示 行数,列数,子部件大小是否相同
    23 table=gtk.Table.new(3,3,true)
    24 
    25 --现在把HBox作为外层容器,其它容器放在VBox里
    26 window:add(hbox)
    27 
    28 --向h/VBox中添加子部件常用两个函数,pack_start,pack_end
    29 --                竖直盒          水平盒
    30 --pack_start      从上往下      从左往右
    31 --pack_end        从下往上      从右往左
    32 --四个参数分别表示 子部件,是否扩展,是否填充,子部件间隔
    33 hbox:pack_start(vbox1,false,false,3)
    34 hbox:pack_start(vbox2,false,false,3)
    35 
    36 
    37 entry=gtk.Entry.new()
    38 entry:set_text("在fixed里")
    39 fix:put(entry,20,20)
    40 --本来想用不同的颜色设置容器背景,这样很容易区别,结果折腾了十多分没出来,看来lgob没实现
    41 --fix:modify_bg(gtk.STATE_NORMAL, gdk.Color(6400, 6400, 6440))
    42 vbox1:pack_start(fix,false,false,3)
    43 
    44 bOk=gtk.Button.new_with_label("ok")
    45 alignment:add(bOk)
    46 vbox1:pack_start(alignment,false,false,3)
    47 
    48 
    49 b1=gtk.Button.new_with_label("1")
    50 --五个参数分别是 子部件,子部件所在格子的左右上下的线坐标,见图2
    51 table:attach(b1,0,1,0,1)
    52 b2=gtk.Button.new_with_label("2")
    53 table:attach(b2,1,2,0,1)
    54 b3=gtk.Button.new_with_label("3")
    55 table:attach(b3,2,3,0,1)
    56 b4=gtk.Button.new_with_label("4")
    57 table:attach(b4,0,1,1,2)
    58 b5=gtk.Button.new_with_label("5")
    59 table:attach(b5,1,2,1,2)
    60 b6=gtk.Button.new_with_label("6")
    61 table:attach(b6,2,3,1,2)
    62 b7=gtk.Button.new_with_label("7")
    63 table:attach(b7,0,1,2,3)
    64 b8=gtk.Button.new_with_label("8")
    65 table:attach(b8,1,2,2,3)
    66 b9=gtk.Button.new_with_label("9")
    67 table:attach(b9,2,3,2,3)
    68 
    69 vbox2:pack_start(table,false,false,3)
    70 
    71 --显示所有部件
    72 window:show_all()
    73 
    74 --进入gtk主循环,交给gtk处理
    75 gtk.main()


    作者:半山
    出处:http://www.cnblogs.com/xdao/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    理解MySQL——索引与优化
    Android中shape的使用
    Android之Camera控制拍照
    android的fragments管理
    android的fragment基本介绍
    android的animator
    android软键盘弹出隐藏的监听
    android平板Home键的监听
    android jsonarray
    android 应用静默自启动的解决方法
  • 原文地址:https://www.cnblogs.com/xdao/p/lgob_layout.html
Copyright © 2011-2022 走看看