2009-09-24 67 views
2

我觉得这个问题有一个简单的答案;但是,对于我的生活,我无法弄清楚。我试图将列表框选择转换为其字符串元素,所以我可以将其输入到数据库中。如何将Tcl Listbox数值指示转换为其元素

我知道我可以使用.listbox curselection来获取它的索引;不过,我需要将其转换为字符串。谁能帮我这个?

谢谢

DFM

回答

3

这里有一个简单,工作示例...

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]子命令一起使用,如上所示。

+0

谢谢Jeff - 您的示例完美无缺。我只需要使用两条线。 – DFM 2009-09-25 13:20:06

2

你应该皮卡Practical Programming in tcl and tk副本。我是tcl/tk的“骆驼书”(盗取perl习惯用法)。

至于你的问题,你想要的是:

set selectedText [list] 
foreach selectedLine [$listbox curselection] { 
    lappend selectedText [$listbox get $selectedLine ] 
} 
+0

谢谢拜伦 - 我试过了代码,但无法让它工作。我没有将我设置为变量,所以我不能使用$ i。 Cursorselection无法识别;尽管我可以使用curselection。最后,foreach语句的args数量不对。不应该是:foreach {var ...} $ var {statement ...}。如果可能,你能否详细说明。我用你的建议尝试了一些替代方案,但没有运气。 – DFM 2009-09-24 22:51:55

+0

它看起来像curselection和大括号错误已经修复上面,但还有另一个问题。最后一行中的“$ i”应该是“$ selectedLine” – 2009-09-25 00:48:36

相关问题