2

GUI(ログインウィンドウ)を作っています。パスワードが正しい場合、ログイン ウィンドウは他のウィンドウを呼び出す必要があります。サブウィンドウを使用するのではなく、PerlTk で別のウィンドウを呼び出す方法はありますか?

use strict;

use Tk;

my $mw = MainWindow->new;
$mw->geometry("300x150");
$mw->configure(-background=>'gray',-foreground=>'red');
$mw->title("PLEASE LOGIN");

my $main_frame=$mw->Frame(
    -background=>"gray",-relief=>"ridge",)->pack(-side=>'top',-fill=>'x');
my $left_frame=$main_frame->Frame(
    -background=>"gray")->pack(-side=>'left',-fill=>'x');
my $bottom_frame1=$mw->Frame(
    -background=>"gray")->pack(-side=>'bottom',-fill=>'x');
my $right_frame1=$mw->Frame(
    -background=>"gray")->pack(-side=>'left',-fill=>'x');


my $button=$bottom_frame1->Button(-text=>"OK",-command=>\&push_button);
$button->pack(-side=>'left');
my $cancel=$bottom_frame1->Button(-text=>"CANCEL",-command=>sub{$mw->destroy});
$cancel->pack(-side=>'right');
my $entry2=$mw->Entry(-width=>20,-relief=>"ridge")->place(-x=>100,-y=>75);

sub push_button{
   ...
   }

my $mw=MainWindow->new;
$mw->geometry("900x690");
4

1 に答える 1

1

別々の MainWindows が必要ですか? 各 MainWindow を作成したら、適切な変数を参照するさまざまなウィジェットを作成します。1 つの MainWindow にボタンがあり、もう 1 つの MainWindow にボタン押下カウンターがある短いプログラムを次に示します。

#!/usr/local/bin/perl

Tk を使用します。

# 独自の MainWindow としての他のウィンドウ
# ボタンを押した回数が表示されます
他のウィンドウで # が押された
my $other_window = MainWindow->new;
$other_window->title("その他のウィンドウ");
私の $other_frame = $other_window->Frame->pack(
    -fill => '両方'
    );

私の $other_label = $other_frame->Label(
    -text => '0 回押した',
    )->パック(
        -サイド => 'トップ',
        -塗りつぶし => 'x',
    );

# 独自の MainWindow としてのログイン ウィンドウ
my $login_window = MainWindow->new;
$login_window->title("ログインウィンドウ");
私の $login_frame = $login_window->Frame->pack(
    -fill => '両方'
    );


私の $login_label = $login_frame->Label(
    -text => 'ボタンを押してください',
    )->パック(
        -サイド => 'トップ',
        -塗りつぶし => 'x',
    );


私の $pressed = 0;
私の $login_button = $login_frame->Button(
    -text => 'ボタン',
    -command => sub { # $other_label を参照
        $押された++;
        $other_label->configure( -text => "押された $pressed 回" );
        }、
    )->パック(
        -サイド => 'トップ',
        -fill => '両方',
    );


メインループ;
于 2009-02-15T22:17:00.057 に答える