【问题标题】:How to Convert a Tcl Listbox Numerical Indice to its Element如何将 Tcl 列表框数字索引转换为其元素
【发布时间】:2009-09-24 19:24:54
【问题描述】:

感觉这个问题有一个简单的答案;但是,对于我的一生,我无法弄清楚。我正在尝试将列表框选择转换为其字符串元素,以便可以将其输入数据库。

我知道我可以使用 .listbox curselection 来获取它的索引;但是,我需要将它转换成它的字符串。谁能帮我解决这个问题?

谢谢,

DFM

【问题讨论】:

    标签: string listbox indexing element tcl


    【解决方案1】:

    这是一个简单的工作示例...

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

    【讨论】:

    • 感谢 Jeff - 您的示例运行良好。我只需要使用两行。
    【解决方案2】:

    您应该领取一份Practical Programming in tcl and tk 的副本。我是 tcl/tk 的“骆驼书”(偷一个 perl 成语)。

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

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

    【讨论】:

    • 谢谢拜伦 - 我尝试了代码,但无法让它工作。我没有将 i 设置为变量,所以我不能使用 $i。游标选择无法识别;虽然,我可能会使用诅咒。最后,foreach 语句的参数数量错误。不应该是:foreach {var...} $var {statement...}。如果可能,您能否详细说明。我根据您的建议尝试了多种替代方案,但都没有成功。
    • 上面的 curselection 和大括号拼写错误似乎已修复,但还有另一个问题。最后一行的“$i”应该是“$selectedLine”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2014-12-09
    • 2020-05-09
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多