2013-01-22 55 views
1

最近當我在Perl中編寫gtk2程序時,我遇到了一個小問題。我有一個主窗口,它使用標籤和按鈕中的變量來顯示用戶的一些數據。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的視覺更新窗口我試圖通過再次調用窗口函數來繪製它,但由於某些原因,即使在發出Gtk2-> main_quit之後,舊的仍然保持不變。此外,我意識到這可能是一個蹩腳的問題,但我第一次使用Gtk2庫來編寫一個重大項目,我還沒有真正的專家。 這裏是我到目前爲止的代碼($確定變量代表在彈出窗口中的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 

回答

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(); 
+0

感謝您的幫助,我真的很感激:) – 5m0k3

+0

不客氣!我很高興聽到它。 – edem