Schrift
[thread]4978[/thread]

mainwindow reload



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
J-jayz-Z
 2005-04-28 23:58
#43794 #43794
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich hab hier ein kleines Beispielsscript, das ein bestimmtes Frame aktualisieren soll. Also, das sich der Inhalt ändern soll. Geht aber nicht ganz so, wie ich mir das vorgestellt hab...

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
#!/usr/bin/perl
use strict;
use warnings;

use Tk;

my $mw = MainWindow->new();

my $r = $mw->Frame()->pack(-side => 'left');
my $l = $mw->Frame()->pack(-side => 'right');

my $i =1;

my $b1 = $r->Button(-text => 'Test', -command => sub { $i =0; })->pack(-side => 'left');

if ($i)
{
my $t = $l->Button(-text => 'Hallo')->pack(-side => 'right');
}
else
{
my $t = $l->Button(-text => 'Ade')->pack(-side => 'right');
}

MainLoop();


jemand eine Idee? ? ?
thx schonmal
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
Froschpopo
 2005-04-29 00:02
#43795 #43795
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
du kannst doch mit $r->update() z.b. ein Frame aktualisieren.

Die einzelnen Buttons kannst du auch mit configure() verändern:

$b1->configure(-text => "neuer Text");\n\n

<!--EDIT|Froschpopo|1114718628-->
J-jayz-Z
 2005-04-29 00:03
#43796 #43796
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
thx, das ging schnell :D
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-04-29 01:11
#43797 #43797
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
hmm, wo muss ich den reload rein tun bzw. wie muss ich das script ändern?
Ich hab $l->update(); in die subroutine gepackt, weil ich dachte, da wär es richtig aufgehoben, aber es geht nicht...
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
Froschpopo
 2005-04-29 01:22
#43798 #43798
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
was möchtest du überhaupt updaten?
Dubu
 2005-04-29 02:12
#43799 #43799
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Wenn dein Programm den Button abfragt, ist es natuerlich schon in der MainLoop und damit weit hinter deiner if-Abfrage, die nur einmal am Anfang ausgefuehrt wird.

Was du wahrscheinlich vor hast, laesst sich viel einfacher loesen, indem du statt
-text => "..."
ein
-textvariable => \$foo
in den Button setzt und als Aktion des anderen Buttons die Variable $foo aenderst. ($foo vorher deklarieren nicht vergessen!)
J-jayz-Z
 2005-04-29 11:37
#43800 #43800
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Nein, ich will eigentlich ein komplettes frame updaten.
Ich habe vor, nach dem klicken eines Buttons, den Inhalt eines Frames zu ändern. Das heißt, wenn jemand den button klickt, soll anstelle eines Textfeldes ein Label widget mit einem Bild drin erscheinen. Der rest ist kein Problem, nur die Tatsache, wie ich den Inhalt ändern kann..:-(
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
Froschpopo
 2005-04-29 11:39
#43801 #43801
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Dafür musst du aber nicht das Frame updaten, du hängst das Label einfach in das Frame rein, das kannst du auch später machen... z.b. mit: $frame->Label()->pack().... oder aber auch mit $parent->Label()->pack(-in => $frame)

Wenn das Fenster in der Größe nicht verändert wird, kannst du auch ganz einfach den Geometriemanager place verwenden, für eine schnelle justierung mit xy-Werten, aber damit muss man vorsichtig sein. Besser is wenn du mit pack oder grid das Label im Frame justierst.\n\n

<!--EDIT|Froschpopo|1114760456-->
J-jayz-Z
 2005-04-29 11:44
#43802 #43802
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das ist vielleicht nicht unbedingt das Problem. Nur wie kann ich dann die verschiedenen Widgets aufrufen beim klicken des Buttons? ? ?
Das hab ich nicht verstanden :-(
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
Froschpopo
 2005-04-29 11:47
#43803 #43803
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das geht ganz einfach... mit
Code: (dl )
1
2
3
-command => sub {
# hier widgets frame zuordnen
}
\n\n

<!--EDIT|Froschpopo|1114760924-->
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2005-04-28 23:58.