有两章提到Web和Tk,这都是很大的篇章,还是需要专题去看。以前也曾用tcl/tk写过一个界面,用来解释当时写的计费汇总科目的配置,不过这都已经随着代码的退休也已忘却。 所以在看Ruby Tk章节时回忆一下。 先是需要一个容器widget(比如TkFrame或TkRoot),然后在容器中创建widget,比如说按钮或文本,准备好后调用Tk.mainloop启动界面,Tk引擎就会控制程序,显示widget并调用响应GUI事件的代码。 看一段简单的代码: require 'tk' root = TkRoot.new { title "Ex1" } TkLabel.new(root) { text 'Hello, World!' pack { padx 15 ; pady 15; side 'left' } } Tk.mainloop 我们可以通过回调和绑定变量从widget传回信息。 回调callback:command选项有Proc对象,回调时触发。 采用TkVariable proxy模式,绑定Ruby变量到Tk widget的值。在TKVariable.new中采用TkVariable引用作为参数,这样你就可以直接用TkVariable的值get/set方法影响widget的内容。 每个widget都有configure方法,使用Hash或代码块,和new的方式一致。 可以使用cget返回特定的选项值。 GUI中很重要的一点就是界面元素的排布,Geometry管理器提供了三种命令: pack:灵活的,基于约束的排布 place:绝对位置排布 grid:表格(行列)方式排布 绑定事件:b.bind(“Enter”) { b.configure(‘image’=>image2) } 至于一堆的widget和事件,需要用的时候理理。