e widgets" else puts "Hide or destroy widgets" end } e.add Gtk::Button.new "Button1" e.expanded=true add e set_default_size 250, 200 set_window_position Gtk::Window::POS_CENTER show_all end end Gtk.init window = RubyApp.new Gtk.main
在本章中,我们将显示如何在窗体或对话框上放置构建。 当
设计应用程序用户界面时,我们决定使用何类构建以及如何在应用程序上组织这些构建。 为组织这些构建,我们需要使用一类称为布局器的不可视构建。在本章中我们将提到 Alignment 构件、Fixed 构建件、Vbox 构件、Vbox 构件何 Table 构建。 固定构建 固定容器构建将其子构件固定的大小放置在固定的位置上, 这种容器构建不能自动处理布局 管理。在大多数应用程序中,我们一般不使用这种容器构件。在某些
特殊的区域,才使用这 种容器构件。 例如, 一些使用图表的游戏和专业的应用程序、 大小相当并可以移动的构件 (如 电子制表
软件中的图表)以及小巧而有教育性的例子。 class RubyApp
e puts e puts “cannot load images” exit end image1=Gtk::Image.new bardejov image2=Gtk::Image.new rotunda image3=Gtk::Image.new mincol fixed=Gtk::Fixed.new fixed.put image1,20,20 fixed.put image2,40,160 fixed.put image3,170,50
add fixed end end Gtk.init Window=RubyApp.new Gtk.main
在这个例子中,我们在窗体上显示了三个小图像文件。我们明确指定 X、Y 坐标,用来放置 这些图像。 modify_bg Gtk::STATE_NORMAL,Gdk::Color.new(6400,6400,6440) 为了到达更好的视觉感受,我们将背景颜色改为深灰色。 Bardejov=Gdk::Pixbuf.new “bardejov.jpg” 从硬盘中加载图像文件到像素缓冲区对象中。 image1=Gtk::Image.new bardejov image2=Gtk::Image.new rotunda image3=Gtk::Image.new mincol Image 是一种常用来显示图像的构件,它通过在构造器中获取像素缓冲区对象。 fixed=Gtk::Fixed.new 创建一个 Fixed (固件) 容器构件。 fixed.put image1,20,20 我们将第一张图像放在 X=20,Y=20 的坐标处。 Add fixed 最后,将固件(Fixed)容器构件添加到窗体构件上。
按钮
Alignment 容器构件用来控制其子构件的大小和对其。 Class RubyApp ok=Gtk::Button.new “OK” ok.set_size_request 70,30 close=Gtk::Button.new “Close” hbox.add ok hbox.add close halign=Gtk::Alignment.new 1,0,0,0 halign.add hbox vbox.pack_start halign,false,false,3 add vbox end end
Gtk.init Window.RubyApp.new Gtk.main 在这个代码实力中,我们在窗体构件的右下端放置了两个按钮构件。为了实现这,我们使用 了一个水平盒构件和一个竖直盒构件以及两个调整容器构件。 valign=Gtk::Alignment.new 0,1,0,0 将子构件放置在底部。 vbox.pack_start valign 在这里,我们将调整容器构件放置在竖直盒构件上。 hbox=Gtk::Hbox.new true,3 … ok=Gtk::Button.new “OK” ok.set_size_request 70,30 close=Gtk::Button.new “Close” hbox.add ok hbox.add close 创建一个水平盒构件并将两个按钮构件放置在其上。 halign=Gtk::Alig
nment.new 1,0,0,0 halign.add hbox vbox.pack_start halign,false,false,3 上述代码将创建一个 algnment 容器,用于将其子构件放置在其右边。我们在 alignment 容 器上添加一个水平盒构件并将 alignment 容器添加到竖直盒容器上。但我们必须记住的是, algnment 容器上只能有一个子构件,这就是我们为什么要用盒容器构件的原因。
计算器框架
表构件能将其它构件以