Je suis en train de créer une zone de forme simple, en fin de compte pour placer les données dans une base de données. En ce moment, je suis simplement le tester avec puts
déclarations, comme suit:Obtenir la valeur de textvariable (widget entrée)
package require Tk
wm title . "Add"
grid [ttk::frame .c -padding "3 3 12 12"] -column 0 -row 0 -sticky nwes
grid columnconfigure . 0 -weight 1; grid rowconfigure . 0 -weight 1
grid [ttk::label .c.idlbl -width 7 -text "id"] -column 1 -row 1 -sticky we
grid [ttk::entry .c.id -width 7 -textvariable id] -column 2 -row 1 -sticky we
grid [ttk::label .c.txtlbl -text "text"] -column 1 -row 2 -sticky w
grid [ttk::entry .c.txt -width 7 -textvariable text] -column 2 -row 2 -sticky we
grid [ttk::button .c.calc -text "Add!" -command db_add] -column 1 -row 3 -sticky w
foreach w [winfo children .c] {grid configure $w -padx 5 -pady 5}
focus .c.id
proc db_add {} {
set id $::id
set text $::text
puts $id
puts $text
}
Ma question: pourquoi dois-je faire set
dans un autre nom de la variable, avant que je puisse faire quoi que ce soit avec la valeur? Pourquoi ne puis-je pas simplement faire puts $::id
?
J'ai essayé puts expr{$::id}
, qui donne une sortie comme expr{Whatever Text Was Entered}
, me laissant incertain pourquoi le expr
ne part pas. Il semble que mon concept de variables dans TCL est très trouble pour le moment.
Il semble que votre connaissance de l'invocation des commandes soit insuffisante. Tcl n'a que [12 règles de syntaxe] (https://tcl.tk/man/tcl8.6/TclCmd/Tcl.htm), lisez-les. –
Vous voulez 'puts [expr $ :: id]' –