2016-09-10 23 views
1

単純な入力で新しいウィンドウを表示し、1行のテキストを置いて、OKボタンを押して変数の値を設定したい。私は単純なエントリコマンドを使用すると、私のメインウィンドウに表示されます。私はtk_dialogのようなものが必要です。テキストを変数に代入するオプションがあります。定義済みのtk_ *関数はありますか?新しいウィンドウで開く

+0

あらかじめ定義されたダイアログはありません。とにかくそれほど多くのコードではないので、とにかく特定のユースケースに特化した特別なカスタマイズを通常必要とするため、誰もこれをやりなおすことはありません。 –

答えて

0

あなたはTkのトップレベルのコマンドを使用して別のウィンドウを作成する必要が

% set top [toplevel .top] 
.top 
% focus $top 
% grab $top 
% set entryBox [entry $top.ent -textvariable x] 
.top.ent 
% pack $entryBox 
% set btn [button $top.btn -text "Click Me"] 
.top.btn 
% pack $btn 
0

この手順:

proc entrybox varName { 
    set top [toplevel .top[clock seconds]] 
    entry $top.eb -textvariable $varName 
    button $top.bu -command [list incr ${top}done] -text OK 
    pack {*}[winfo children $top] 
    vwait ::${top}done 
    unset -nocomplain ::${top}done 
    destroy $top 
} 

グローバルまたは完全修飾名を与えられ、エントリとして、新たなトップレベルのダイアログを作成しますボタン。ボタンがクリックされるのを待って、トップレベルのダイアログを破棄します。入力ボックスのテキストは変数に残ります。

ドキュメント: button (widget)clockdestroyentry (widget)incrlistpackprocsettoplevelunsetvwaitwinfo{*} (syntax)

関連する問題