• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl/Tkで変数名を使って一気にウィジェットを配置できますか)

Perl/Tkで変数名を使って一気にウィジェットを配置する方法

このQ&Aのポイント
  • Perl/Tkでforやforeachを使って、ウィンドウ上にウィジェットを一括配置することは可能です。
  • しかし、作成したウィジェットに名前をつけて参照する方法はありません。
  • より詳しい方法を知りたい場合は、以下の手順を参考にしてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

$window->Entry でウィジェットオブジェクトが返ってきそうなので, 無理すれば for my $i (0..9) { (${ent$i} = $window->Entry)->pack; } とか書けるのかもしれんけど, 普通は配列を使うような気がする.

Yonah
質問者

お礼

配列で実行できました!拙いコードですがご笑覧下さい。 #!/usr/bin/perl use strict; use warnings; use Tk; my $window = new MainWindow; my @ents = (qw/$ent0 $ent1 $ent2 $ent3 $ent4 $ent5 $ent6 $ent7 $ent8 $ent9/); foreach (@ents) {$_ = $window->Entry->pack;} #次の行で属性をいじってみるテスト foreach (@ents) {$_->configure(-width=>80);} #OK! MainLoop; なお、「無理すれば」手順はCan't call method "ent" without a package or object referenceで不可でした。 とりあえずプログラム自体を動かすことは配列でいけそうです。 ありがとうございます。_(_ _)_ PerlとTkは機能と比較した場合、Web資料や書籍が他言語より少ないように思えるので、他にもご意見のある方がいればしばしお待ちしております。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

や, それは「変数 $ent? に入れているわけじゃない」ことを理解してるんだよね? まあ, 結果的にできてればいいかもしれんけど....

Yonah
質問者

お礼

下のように修正です。Tacosanさん突っ込みありがとうございます。 ******** #!/usr/bin/perl use strict; use warnings; use Tk; my $window = new MainWindow; my @ents; for (1..9) {@ents[$_] = $window->Entry->pack;} #↓ひとまず参照できた。。。仮に[5]を変更した $ents[5]->configure(-width=>40); MainLoop; ******** 多分、先の qw/$ent?並び/ はなんの意味も成さなかったのかなと思っています。 糞コードしか書けませんので、しばらく何か突っ込みがある方はよろしくお願いします。

Yonah
質問者

補足

こんにちは。 これは前回のお礼を投稿した後、別のコードを書いていて、なんかおかしいなあと思ったところ、どうも$ent?ではなく$ent[?]に入っているようでした…(- -;) なので、Tacosanさんの>>1にお礼したときに僕が書いたコードがおかしいという認識は今はありますが、先に全部動作する状態にして後でマシにしていこうと思っています。 Perlは始めて半月強なため混乱気味でよくわからないので、もう少しうなって、まとまったらお礼と一緒にコードを掲載しようかと思います。

関連するQ&A