ttk:entry
から値を取得しようとしています。私は次のコードを持っています。ttkから値を取得する方法:エントリ
variable DefaultRoot
ttk::label $wi.custcfg.dlabel -text "Default Root:"
ttk::entry $wi.custcfg.daddr -width 10 -textvariable ::DefaultRoot -validate focusout -validatecommand { puts $::DefaultRoot; return 1}
puts $DefaultRoot
しかし、私はあなたが変数を使うまでは存在しません
global DefaultRoot
puts $DefaultRoot
または
puts $::DefaultRoot
何かがエントリに書き込まれるまでの変数が存在しません。出力アクションをReturnなどのイベントにバインドする必要があります(Returnキーを押したり離したときに発生します)。このように: 'bind $ wi.custcfg.daddr {puts $ :: DefaultRoot}'(プロシージャ名はここのスクリプトよりも優れています)。 –
私はこのようなものを試しました 'ttk :: entry $ wi.custcfg.daddr -width 10 -textvariable :: DefaultRoot -validate focusout -validatecommand {puts $ :: DefaultRoot; return 1} は$ DefaultRoot ' を入れますが、最後のputsにはまだエラーが発生します –
私にとってはうまく動作します。最後のputsが実行されると、まだエントリが使用されていないのでエラーメッセージが表示されますが、テキストが入力されてエントリがフォーカスを失うとすぐに、検証スクリプトのputsは正常に動作します。変数を自分で作成する(つまり値を与える)まで、最後の行のputsが動作することは期待できません。 –