You are here

tablelist 사용

오랫만에 다른 GUI 작업을 하게 되어서 공부를 하다보니,, 역시 어렵습니다,,ㅎ
이전에는 Tktable을 이용해서 작업을 했는데, tablelist가 훨씬 깔끔하고 좋아보여서 한번 도전해보려고 합니다.
현재까지 코딩한 부분은 다음과 같습니다. tablelist 예제에서 필요한 부분만 가져오고, 조금 수정한 상태입니다.

#package require Tablelist
package require Tablelist_tile
package require tile

set dir [file dirname [info script]]
source [file join $dir option_tile.tcl]
option add *Tablelist*Checkbutton.background            white
option add *Tablelist*Checkbutton.activeBackground      white
option add *Tablelist*Entry.background                  white

tablelist::addBWidgetEntry
tablelist::addBWidgetSpinBox
tablelist::addBWidgetComboBox

wm title . "table list example"

set num 4

set fr1 [frame .fr1]
pack $fr1 -side top -anchor w

pack [ttk::label $fr1.lab1 -text "Turns of coil"] -side left -anchor w -padx 3
set ent [ttk::entry $fr1.ent -textvariable num]
pack $ent -side left -fill x -expand true -padx 3
#############################################################
#################여기서#######################################
pack [ttk::button $fr1.btn -text "add columns" -command {
                $tbl insert end \
                        [list "" "" "" "" "" "" ""]
                }] -side right -anchor e
#############################################################
#############################################################
set tbl .tbl
tablelist::tablelist $tbl\
        -columns {0 "xc (cm)" 0 "yc (cm)" 0 "zc (cm)" 0 "lc" 0 "theta" 0 "phi" 0 "ic (amp)"}\
        -background gray98 -width 54

$tbl columnconfigure 0 -editable yes -sortmode dictionary
$tbl columnconfigure 1 -editable yes -sortmode dictionary
$tbl columnconfigure 2 -editable yes -sortmode dictionary
$tbl columnconfigure 3 -editable yes -sortmode dictionary
$tbl columnconfigure 4 -editable yes -sortmode dictionary
$tbl columnconfigure 5 -editable yes -sortmode dictionary
$tbl columnconfigure 6 -editable yes -sortmode dictionary

namespace eval cvar1 {} {
        set xc 0.2; set yc 0.2; set zc 0.01; set lc 0.4; set theta 0.5; set phi 0.; set ic 10.
}

namespace eval cvar2 {} {
        set xc 0.6; set yc 0.2; set zc 0.01; set lc 0.4; set theta 0.5; set phi 0.5; set ic 10.
}

namespace eval cvar3 {} {
        set xc 0.6; set yc 0.6; set zc 0.01; set lc 0.4; set theta 0.5; set phi 1.; set ic 10.
}

namespace eval cvar4 {} {
        set xc 0.2; set yc 0.6; set zc 0.01; set lc 0.4; set theta 0.5; set phi 1.5; set ic 10.
}

$tbl insert end\
        [list "$cvar1::xc" "$cvar1::yc" "$cvar1::zc" "$cvar1::lc"\
                "$cvar1::theta" "$cvar1::phi" "$cvar1::ic"]
$tbl insert end\
        [list "$cvar2::xc" "$cvar2::yc" "$cvar2::zc" "$cvar2::lc"\
                "$cvar2::theta" "$cvar2::phi" "$cvar2::ic"]
$tbl insert end\
        [list "$cvar3::xc" "$cvar3::yc" "$cvar3::zc" "$cvar3::lc"\
                "$cvar3::theta" "$cvar3::phi" "$cvar3::ic"]
$tbl insert end\
        [list "$cvar4::xc" "$cvar4::yc" "$cvar4::zc" "$cvar4::lc"\
                "$cvar4::theta" "$cvar4::phi" "$cvar4::ic"]

pack $tbl

위아래로 주석 처리된 부분에서 현재는 버튼을 누르면 무조건 한행이 추가되는데요..
만약 초기변수 num의 값과 다른 변수가 entry에 입력 되었을 경우 그 전에 있던 행은 모두 없애고 입력된 num 값 만큼 새로운 행을 추가하고 싶은데 잘 안되네요.
거기다가 추가된 행이나 기본적으로 있던 행의 데이터를 파일에 쓰고 싶은데
namespace안에 셋팅이 되어있는 변수는 가져다 쓸 수 있는데, 새롭게 입력된 데이터는 어떻게 저장하는지
궁금합니다 :)