Соединение сигналов с Perl и GtkBuilder - PullRequest
4 голосов
/ 02 мая 2011

Я пытаюсь понять, как получить доступ к виджету из обработчика сигнала.

У меня есть ярлык с именем «lblVerify», который я просто хочу изменить на «проверено», когда я нажимаю на кнопку.Я знаю, что мне нужно использовать что-то вроде Gtk2 :: Label-> set_text, но я не совсем уверен, как получить доступ к свойствам виджета из функции on_btnVerify_clicked.

 #!/usr/bin/perl

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

my $builder;
my $window;

# get a new builder object
$builder = Gtk2::Builder->new();

# load the Gtk File from GLADE
$builder->add_from_file( "testglade.xml" )
    or die "Error loading GLADE file";

# create the main window
$window = $builder->get_object( "window1" )
    or die "Error while creating Main Window";

# connect the event handlers    
$builder->connect_signals( undef );


$window->show_all();


$builder = undef;

Gtk2->main();

exit;



sub on_btnVerify_clicked
{



}   

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

Вам необходимо передать виджеты, к которым вы хотите получить доступ, в качестве параметра «пользовательских данных» в обработчик сигнала.В этом случае вы должны сделать что-то вроде

$label = $builder->get_object("lblVerify");
$builder->connect_signals($label);

, которое передает метку в качестве параметра пользовательских данных всем вашим обработчикам сигналов.Тогда аргументами, переданными on_btnVerify_clicked, будут сама кнопка и метка.(Извините за любые ошибки, мой Perl довольно ржавый.)

0 голосов
/ 02 мая 2011

Спасибо, ptomato.

Это было то, что мне было нужно, чтобы передать виджет в функцию. Что касается самой функции, это сработало:

sub on_btnSpacewalkVerify_clicked
{

    my $self = shift;
    my $label = shift;

    $label->set_text("Verified");

}   
...