2009-09-24 77 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

相關問題