Schrift
[thread]5083[/thread]

Widgets ändern

Leser: 1


<< >> 4 Einträge, 1 Seite
J-jayz-Z
 2005-09-20 10:57
#44596 #44596
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi, ich würde gerne in meinem script das Widget ändern. Wie muss ich das machen? Also beispielsweise beim klick auf einen Button ein Label Widget in ein Textwidget ändern? Meine sehr unschöne Idee:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my $main = tkinit;
$main->Label(-text => 'Hallo')->pack();
$main->Button(-text => 'change', -command => \&foo)->pack();

MainLoop();

sub foo {
$main->destroy();
$main = tkinit;
$main->Label(-text => 'blubb')->pack();
}
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
renee
 2005-09-20 11:05
#44597 #44597
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my $main = tkinit;
my $label = $main->Label(-text => 'Hallo')->pack();
$main->Button(-text => 'change', -command => [\&foo,$label])->pack();

MainLoop();

sub foo {
my ($label) = @_;
$label->configure(-text => 'blubb')->pack();
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
J-jayz-Z
 2005-09-20 11:38
#44598 #44598
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
So wie du es geschrieben hast, kann ich e auch mit -textvariable machen. Ich will widgets ändern. Von einem Label Widget in ein Text Widget. Ich gebe zu, mein beispiel war nicht das beste ^^
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2005-09-21 12:02
#44599 #44599
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Okay, so geht es:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my %widget;
my $text;
my $temp = 1;

$widget{main} = MainWindow->new();
$widget{frame} = $widget{main}->Frame(-width => 65, -height => 20);
$widget{frame}->packPropagate(0);
$widget{frame}->pack(-side => 'top');
$widget{label} = $widget{frame}->Label(-textvariable => \$text);
$widget{exit} = $widget{main}->Button(-text => 'quit', -command => sub { $widget{main}->destroy(); });
$widget{change} = $widget{main}->Button(-text => 'change', -command => \&change);
$widget{entry} = $widget{frame}->Entry(-textvariable => \$text);

$widget{label}->pack(-side => 'top');
$widget{exit}->pack(-side => 'right');
$widget{change}->pack(-side => 'left');

MainLoop();

sub change {
if($temp) {
    $widget{label}->packForget();
    $widget{entry}->pack(-side => 'top');
    $temp = 0;
} else {
    $widget{entry}->packForget();
    $widget{label}->pack(-side => 'top');
    $temp = 1;
    }
}


EDIT: Mit packPropagate(0) ist es schöner...\n\n

<!--EDIT|J-jayz-Z|1127292098-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< >> 4 Einträge, 1 Seite



View all threads created 2005-09-20 10:57.