Lectus: I've been playing with Metakit and here is an example program using it:
Phone book using Metakit:
# Loading required packages: Tk and Metakit
package req Tk
package req Mk4tcl
# proc to create the GUI
proc GUI {} {
# Code to create the GUI using Tk 8.5
wm title . "Phone Book"
ttk::frame .top
ttk::label .top.lName -text Name:
ttk::entry .top.eName
ttk::label .top.lPhone -text Phone:
ttk::entry .top.ePhone
ttk::button .top.bAdd -text Add -command {
.tv insert {} end -values [list [.top.eName get] [.top.ePhone get]]
mk::row append $vw Name [.top.eName get] Phone [.top.ePhone get]
mk::file commit db
}
eval pack [winfo children .top] -side left -padx 5 -pady 5
pack .top -fill both -expand 1
ttk::scrollbar .sb -orient vert
ttk::treeview .tv -columns {Name Phone} -show headings
pack .tv .sb -fill both -expand 1 -padx 5 -pady 5 -side left
.tv conf -yscrollcommand {.sb set}
.sb conf -command {.tv yview}
.tv heading Name -text Name
.tv heading Phone -text Phone
focus .top.eName
# Event: when the user presses DEL the selected row will be deleted from the treeview and database
bind .tv <Delete> {
set itens [.tv item [.tv selection] -values]
foreach i [mk::select db.phonebook -exact Name [lindex $itens 0]] {
#tk_messageBox -message $i
mk::row delete db.phonebook!$i
}
.tv delete [.tv selection]
}
}
# proc to load the database file and put the contents in the treeview
proc loadDB {} {
global vw
mk::file open db db.txt
set vw [mk::view layout db.phonebook {Name Phone}]
mk::loop c db.phonebook {
.tv insert {} end -values [mk::get $c Name Phone]
}
}
# Call the procs
GUI
loadDBI wrote this program for fun and learning. It's incomplete and maybe buggy, but I think it serves as a reference for ttk::treeview and metakit.