4

サインアップ フォームを 1 つ設計しました。このフォームで必要な値をすべて取得したら、送信ボタンをクリックします。

そして、その送信ボタンをクリックしているときに、1 つの関数を呼び出して、その関数に引数を渡したいと考えています。

この目的のためにコードを書きましたが、詳細を取得する前に関数が最初に呼び出されます。(つまり) サインアップ フォームで詳細を取得した後、これらの値を 1 つの関数に渡し、それらの値を検証する必要があります。

しかし、何が起こったのかというと、詳細を取得する前に、関数が呼び出されました。

4

3 に答える 3

3

カルロスの提案は一方向です。もう1つは、フォームから値を読み取り、関数を呼び出すコマンドコールバックをボタンに配置することです(おそらくこのように)。

$button->configure(-command => sub { yourFunc($var1, $var2); });

$var1フォームのフィールドを変数にバインドしたと仮定します$var2。もちろん、自分の状況に合わせて変更してください。

于 2010-04-06T07:58:27.677 に答える
3

ウィジェットへのバインドにコード ref と引数を指定する場合、いくつかのオプションがあります。

$w->configure( -command => [ \&subname,   @args ... ]             );
$w->configure( -command => [ sub { ... }, @args ... ]             );
$w->configure( -command => [ 'methodname', $invocant, @args ... ] );
$w->configure( -command => [ $invocant, 'methodname', @args ... ] );

詳細については、Tk::callbacks POD を参照してください。

于 2010-04-06T18:10:25.613 に答える
0

vwaitの問題のように聞こえます。次のPerl/Tkドキュメントを確認してください。

$widget->waitVariable(varRef)

このようにして、待機変数が変更されたとき(つまり、[送信]ボタンをクリックしたとき)にのみコードが実行されることが保証されます。

それが役に立てば幸い。

于 2010-04-06T07:54:34.597 に答える