尝试在perl gtk2中创建一个简单的图像查看器

尝试在perl gtk2中创建一个简单的图像查看器,perl,user-interface,gtk,Perl,User Interface,Gtk,我正在尝试制作一个简单的图像查看器,您可以将图像的文件名(包括其扩展名)放入其中,但图像不会打包到主窗口中 #!/usr/bin/perl use strict; use warnings; use Glib qw/TRUE FALSE/; use Gtk2 '-init'; my $window=Gtk2::Window->new(); $window->set_title("Image Resizer"); $window->signal_connect('delete

我正在尝试制作一个简单的图像查看器,您可以将图像的文件名(包括其扩展名)放入其中,但图像不会打包到主窗口中

#!/usr/bin/perl

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

my $window=Gtk2::Window->new();
$window->set_title("Image Resizer");
$window->signal_connect('delete_event',sub{Gtk2::main_quit;});

my $vbox1=Gtk2::VBox->new;
my $label=Gtk2::Label->new("Image Filename: ");
my $entry=Gtk2::Entry->new;
my $button=Gtk2::Button->new("Submit");

$button->signal_connect(clicked=>sub{
    my $string=$entry->get_text;
    my $label1=Gtk2::Label->new("$string");
    $vbox1->add($label1);
    my $pbuf=Gtk2::Gdk::Pixbuf->new_from_file_at_size("$string", 200, 200);
    my $image=Gtk2::Image->new_from_pixbuf($pbuf);
    $vbox1->add($image);
});
$vbox1->add($label);
$vbox1->add($entry);
$vbox1->add($button);
$window->add($vbox1);
$window->show_all;
Gtk2->main;

我将此示例作为perl/gtk2教程的一部分,但无法找出错误的来源。

它确实打包了;在窗口已经显示之后,您需要在添加的任何小部件上显式调用
show_all
(在本例中,调用
$label1
$image
)。

谢谢我的朋友!这就是解决方案,我添加$window->show_all in anon sub。干杯!:)如果上述答案解决了您的问题,那么您应该将其标记为“已接受答案”。