1

最近、私がperlでgtk2プログラムを書いていたとき、私は小さな問題に遭遇しました。ラベルとボタンの変数を使用してユーザーにデータを表示するメインウィンドウがあります。

my $label1 = Gtk2::Label->new ("IP ".$target_ip);
my $label2 = Gtk2::Label->new ("Port ".$target_port);
my $label3 = Gtk2::Label->new ("Threads ".$thread_number);

そして、$ target_ip変数(ポップアップウィンドウによる)またはメインウィンドウで使用されている他の変数をユーザーが更新した後は何も起こらないので、Gtk2でウィンドウを更新するにはどうすればよいですか?windowを呼び出して再描画してみました再び機能しますが、何らかの理由で、Gtk2->main_quitを発行した後でも古いものはまだ稼働しています。また、これはつまらない質問かもしれませんが、Gtk2ライブラリを初めて使用して主要なプロジェクトを作成しており、まだ専門家ではありません。これまでの私のコードは次のとおりです($ ok変数は、メインウィンドウの他の変数を更新するポップアップウィンドウの[ok]ボタンを表します)

$ok->signal_connect (clicked => sub {
        $target_ip = $text_area->get_text;
        Gtk2->main_quit; #Pop-up window
        main_Gtk()
        #Rebuild Attack window with given parameters / variables 
4

1 に答える 1

1
#!/usr/bin/perl
use strict;
use warnings;

use Glib qw/TRUE FALSE/;
use Gtk2 '-init';

my $window = Gtk2::Window->new('toplevel');
$window->signal_connect('delete_event' => sub { Gtk2->main_quit; });
$window->set_default_size(300, 200);


my $target_ip = '127.0.0.1';

my $label1 = Gtk2::Label->new ("IP ".$target_ip);

my $vbox = Gtk2::VBox->new(FALSE, 3);
$vbox->pack_start($label1, FALSE, FALSE, 4);

my $button = Gtk2::Button->new("Ok");
$vbox->pack_end($button, FALSE, FALSE, 4);

$button->signal_connect(clicked => sub {
    $target_ip = '88.88.88.88';
    $label1->set_label("IP ".$target_ip);  # That's what you need!!!
});

$window->add($vbox);
$window->show_all;

Gtk2->main();
于 2013-01-23T14:22:29.457 に答える