下記のソースでコントロールが上手く左に寄せる事が出来ない。
use Encode;
use utf8;
use open IO => ":encoding(utf8)";
binmode STDOUT,':utf8';
use Tk;
$top = MainWindow->new();
$top->optionAdd( '*font' => 'MSゴシック 18' );
$f1 = $top->Frame()->pack();
$f2 = $top->Frame()->pack();
$f3 = $top->Frame()->pack();
$f1->Label(-text => "comment")->pack(-side => "left");
$f1->Entry(-textvariable => \$comment)->pack();
$f1->Label(-text => "funct_name")->pack(-side => "left");
$f1->Entry(-textvariable => \$funct_name)->pack();
$f2->Label(-text => "batch_name")->pack(-side => "left");
$f2->Entry(-textvariable => \$batch_name)->pack();
$f3->Button(-text => "OK",-command => \&onButton)->pack(-side => "left");
$f3->Button(-text => "Cancel")->pack();
MainLoop();
sub onButton{
open(OUT,">command.txt")||die "file open err command.txt\n";
print OUT "$comment,$funct_name,$batch_name\n";
close OUT;
exec "01.bat";
exit();
}
下記の様に成る。
上手く左に寄せるには、何処をどの様に修正をすれば
良いのでしょうか。指摘をお願いします。
宜しく、お願いします。
No.1
- 回答日時:
綺麗にそろえるなら、Gridを使うのはどうでしょうか?
No.2ベストアンサー
- 回答日時:
gridは、一つのフレームの上に、各ウィジェットを(Excelのセルのような)縦横格子状に配置するものです。
packの代りに使います。
配置する格子のrowとcolumn等を指定します。
例えば、 comment と表示されるLabelは、左上、つまり-row=>0,->column=0 に配置したいのですから
$f1->Label(-text => "comment")->grid(-row=>0,->column=0);
になります。
他にもいろんな設定があります。
ところで、この画面の設計図は作りましたか?
よほどの熟練でも無い限り、事前の設計無しに思った通りの配置などは無理だと思います。
Perl/Tkで画面を作るのは、丁度、ウェブページをHTML/CSSで直書きするような感覚です。
(Visual Studioのフォームデザイナのようなツールはあるらしいのですが、私は使ったことは無いので紹介できません。)
元のプログラムでやろうとしていることは
Label Entry
と横に並んだ行を1セットにして3セット縦に並べ、その下に
OKボタン Calcelボタン
と横に並んだ行を1セットにして縦に並べる、ということではないでしょうか?
そのために
・1行につき、1つのFrameを用意、packで縦に配置
・1つのフレームに対応するLabel をpackで左側に配置、 Entryを残りに配置
・以上を3フレーム繰り返す
・ボタン配置用のフレームを用意して、packで縦に配置
・ボタン配置用のフレームにボタンを横方向にpackで配置
とやろうとしているのでしょう。
ところが、 Label + Entry とボタン用の4つのフレームを用意しなければいけないのに、$f1,$f2,$f3 と3つしか用意せず、
$1に Label二つとEntry二つを配置してしまっているのが、「期待通りに表示されない」理由です。
ただし、「プログラムに書いた通りに正しく配置」はされています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Strawberry Perl for Windows ...
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlプログラミング 空白行削除
-
perlをバージョンアップしたら...
-
LinuxにおいてのPerlのプログラ...
-
Perlのエラーについてご教授く...
-
Perlで時間の計算
-
perl 初等プログラミングについて
-
アルファベットに付いて質問し...
-
perlでリテラル値はメモリにど...
-
perlのプログラミング 部分入れ...
-
Perlで特定文字列から特定文字...
-
TeraPadエディターの操作方法に...
-
INDIRECT 横に再度抽出したい
-
ラズベリーパイ初心者です。 ラ...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報