我覺得這個問題有一個簡單的答案;但是,對於我的生活,我無法弄清楚。我試圖將列表框選擇轉換爲其字符串元素,所以我可以將其輸入到數據庫中。如何將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