Ruby TK GUI开发-从数组创建标签



我想使用Ruby TK GUI开发来开发一个待办事项列表。我正试图在我要做的一系列任务中运行一个循环。我找不到显示未知数量标签的示例或方法。我们非常感谢任何帮助,并提出建设性的批评。

这并没有显示出它的工作方式,但根据我之前对Ruby的了解,这是我能想到的创建它的唯一方式。

require 'tk'
require 'tkextlib/tile'
root = TkRoot.new {title "Josh's ToDo List"}
content = Tk::Tile::Frame.new(root) {padding "3 3 12 12"}.grid(:sticky => 'nsew')
TkGrid.columnconfigure root, 0, :weight => 1; TkGrid.rowconfigure root, 0, :weight => 1
@todo_list = ['Go to the Store','Get Gas']
$date = TkVariable.new; $todo = TkVariable.new; $display = TkVariable.new
f = Tk::Tile::Label.new(content) {text 'To Do:'}.grid( :column => 1, :row => 1, :sticky => 'we'); 
Tk::Tile::Entry.new(content) {width 7; textvariable $todo}.grid( :column => 2, :row => 1, :sticky => 'we' )
@todo_list.each {|task| Tk::Tile::Label.new(content) {textvariable task}.grid( :column => 2, :row => 2, :sticky => 'we');}
Tk.mainloop

实际上,它非常简单,您在$todo_list中使用"textvariable",它必须是一个预定义的全局变量(如$todo、$date和$display)。每个块,只需将"textvariable'"更改为"text'

 @todo_list.each {|task| Tk::Tile::Label.new(content) {text task}.grid( :column => 2, :row => 2, :sticky => 'we');}
Tk.mainloop

最新更新