首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl gtk2窗口更新

Perl gtk2窗口更新
EN

Stack Overflow用户
提问于 2013-01-23 06:19:00
回答 1查看 356关注 0票数 1

最近,当我用Perl语言编写gtk2程序时,遇到了一个小问题。我有一个主窗口,它使用标签和按钮中的变量来向用户显示一些数据。

代码语言:javascript
复制
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按钮,它更新主窗口中的其他变量)

代码语言:javascript
复制
$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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 22:22:29

代码语言:javascript
复制
#!/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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14469108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档