我觉得这个问题有一个简单的答案;但是,对于我的生活,我无法弄清楚。我试图将列表框选择转换为其字符串元素,所以我可以将其输入到数据库中。如何将Tcl Listbox数值指示转换为其元素
我知道我可以使用.listbox curselection来获取它的索引;不过,我需要将其转换为字符串。谁能帮我这个?
谢谢
DFM
我觉得这个问题有一个简单的答案;但是,对于我的生活,我无法弄清楚。我试图将列表框选择转换为其字符串元素,所以我可以将其输入到数据库中。如何将Tcl Listbox数值指示转换为其元素
我知道我可以使用.listbox curselection来获取它的索引;不过,我需要将其转换为字符串。谁能帮我这个?
谢谢
DFM
这里有一个简单,工作示例...
proc selectionMade {w} {
# --- loop through each selected element
foreach index [$w curselection] {
puts "Index --> $index"
puts "Text --> [$w get $index]"
}
}
catch {console show}
listbox .lb
bind .lb <<ListboxSelect>> {selectionMade %W}
pack .lb -fill both
.lb insert end "Line 1"
.lb insert end "Line 2"
因此,[.lb curselection]返回指数列表的选定元素。要将索引转换为项目的实际文本,只需将其与[.lb get $ index]子命令一起使用,如上所示。
你应该皮卡Practical Programming in tcl and tk副本。我是tcl/tk的“骆驼书”(盗取perl习惯用法)。
至于你的问题,你想要的是:
set selectedText [list]
foreach selectedLine [$listbox curselection] {
lappend selectedText [$listbox get $selectedLine ]
}
谢谢拜伦 - 我试过了代码,但无法让它工作。我没有将我设置为变量,所以我不能使用$ i。 Cursorselection无法识别;尽管我可以使用curselection。最后,foreach语句的args数量不对。不应该是:foreach {var ...} $ var {statement ...}。如果可能,你能否详细说明。我用你的建议尝试了一些替代方案,但没有运气。 – DFM 2009-09-24 22:51:55
它看起来像curselection和大括号错误已经修复上面,但还有另一个问题。最后一行中的“$ i”应该是“$ selectedLine” – 2009-09-25 00:48:36
谢谢Jeff - 您的示例完美无缺。我只需要使用两条线。 – DFM 2009-09-25 13:20:06