Domanda

Sto cercando di capire come accedere a un widget all'interno di un gestore del segnale.

Ho un'etichetta chiamata "Lblverify" che voglio solo cambiare il testo in "Verified" quando faccio clic sul pulsante. So che devo usare qualcosa come gtk2 :: etichetta-> set_text ma non sono del tutto sicuro di come accedere alle proprietà del widget dalla funzione ON_BTNVERIFICE_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
{



}   
È stato utile?

Soluzione

È necessario passare i widget a cui si desidera accedere come parametro "dati utente" al gestore del segnale. In questo caso, faresti qualcosa di simile

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

che passa l'etichetta come parametro dati utente a tutto I tuoi gestori di segnale. Quindi gli argomenti sono passati on_btnVerify_clicked sarà il pulsante stesso e l'etichetta. (Ci scusiamo per eventuali errori, il mio perl è piuttosto arrugginito.)

Altri suggerimenti

Grazie Ptomato.

Questo era ciò di cui avevo bisogno per far passare il widget alla funzione. Per quanto riguarda la funzione stessa, ha funzionato:

sub on_btnSpacewalkVerify_clicked
{

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

    $label->set_text("Verified");

}   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top