In einem ListBox
möchte ich die Namen der vom Benutzer ausgewählten Elemente überprüfen. ListBox
ermöglicht mehrere Auswahlmöglichkeiten. Ich habe versucht, einen Code zum Verfolgen der Cursorauswahl zu schreiben, aber ich habe folgende Probleme.TCL: So legen Sie mehrere eindeutige Listbox-Auswahl in einer Datei ab
- nur das letzte Element in einer Datei gedruckt wird, und
- Jede neue Auswahl die vorherige Auswahl kann nicht gedruckt werden, wenn die
puts
Anweisung abfragen.
Hier ist mein Code
package require Tk
proc selectionMade {w} {
## --- loop through each selected element
foreach index [$w curselection] {
# puts "Index --> $index"
set filename selected_list.list
set fileId [open $filename "w"]
puts "[$w get $index]"
puts $fileId "[$w get $index]"
close $fileId
}
}
catch {console show}
listbox .lb -selectmode multiple
bind .lb <<ListboxSelect>> {selectionMade %W}
pack .lb -fill both
set filename fsp.txt
set fp [open $filename "r"]
set stuff [read $fp]
foreach item $stuff {
.lb insert end $item
}
close $fp
Angenommen, meine Eingabedatei fsp.txt
folgende Elemente hat:
- Amerika
- Britannien
- Neuseeland
- Australien
- Indien
- ...
Vielen Dank für Ihre Eingabe.