![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Perl/Tkでforやforeachを使って、ウィンドウ上にウィジェットを一括配置したいのです。
my $window = new MainWindow;
for (my $i=0; $i<10; ++$i) {$window->Entry->pack;}
みたいにして一括作成はできるのですが、作ったウィジェットを後で使うために、これらのウィジェット名に名前をつけながら配置したいです。
上記のコードの場合、後から ent1->get; のように参照できるようにしたいと思っております。
こういったことは可能でしょうか。またその方法があれば手順を示していただけると助かります。
詳しい人には馬鹿にされそうな文ですが、
$ent$i = $window->Entry->pack;では駄目でした。。。
No.1ベストアンサー
- 回答日時:
$window->Entry でウィジェットオブジェクトが返ってきそうなので, 無理すれば
for my $i (0..9) { (${ent$i} = $window->Entry)->pack; }
とか書けるのかもしれんけど, 普通は配列を使うような気がする.
配列で実行できました!拙いコードですがご笑覧下さい。
#!/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資料や書籍が他言語より少ないように思えるので、他にもご意見のある方がいればしばしお待ちしております。
No.2
- 回答日時:
や, それは「変数 $ent? に入れているわけじゃない」ことを理解してるんだよね?
まあ, 結果的にできてればいいかもしれんけど....
この回答への補足
こんにちは。
これは前回のお礼を投稿した後、別のコードを書いていて、なんかおかしいなあと思ったところ、どうも$ent?ではなく$ent[?]に入っているようでした…(- -;)
なので、Tacosanさんの>>1にお礼したときに僕が書いたコードがおかしいという認識は今はありますが、先に全部動作する状態にして後でマシにしていこうと思っています。
Perlは始めて半月強なため混乱気味でよくわからないので、もう少しうなって、まとまったらお礼と一緒にコードを掲載しようかと思います。
下のように修正です。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?並び/ はなんの意味も成さなかったのかなと思っています。
糞コードしか書けませんので、しばらく何か突っ込みがある方はよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 現在完了の「継続」ではなく「経験」の期間を表す前置詞について 2 2022/05/06 11:39
- 英語 Once it is anticipated that the possibility of a b 1 2023/03/04 09:14
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- 英語 会話で両者認識している名詞にも関わらず不定冠詞を付ける用法について 7 2023/06/16 14:50
- その他(プログラミング・Web制作) 物理の斜方投射で目盛りに数値を入れたい 2 2023/05/27 06:32
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- 英語 私の車は、購入してから7年目になるが、これまでに車検を3回受けた。の英訳 11 2022/06/13 03:39
- 英語 It will most likely be necessary to perform a spli 2 2023/03/26 09:40
- Word(ワード) ワードフォント 一括置換の方法 4 2022/12/31 00:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列における要素数のは...
-
クラスに配列を渡す方法
-
マクロ Publicでの配列定義
-
DataGridViewに配列の値を表示...
-
グループ分けの仕方について
-
Strawberry Perl for Windows ...
-
Excel VBA ユーザーフォームの...
-
VBAのautofilter、criteriaの配...
-
VBScript 配列
-
perl 初等プログラミングについて
-
Perl/Tkで変数名を使って一気に...
-
MATLABの関数で配列の要素を返...
-
リストボックスに縦スクロール...
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
VBのReturnの使い方
-
null 参照の例外が実行時に発生...
-
UWSCの終了の仕方
-
乱数の桁数指定、または範囲指定。
-
Escキーを押すと、中断する時と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dim flag(4) as boolean で配列...
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
二次元配列における要素数のは...
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
リストボックスに縦スクロール...
-
マクロ Publicでの配列定義
-
Excel VBA ユーザーフォームの...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
perl 配列の要素数について
-
Strawberry Perl for Windows ...
-
VBA 二次元配列の1つ目を増...
-
チェックボックスのperlでの値...
-
perl 初等プログラミングについて
-
DBIを使ってSelect文 複数のカ...
-
複数のキーで配列をソートする...
-
Excel(VBA)で配列の要素数を...
-
newで個別に生成した配列にNULL...
おすすめ情報