Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11579[/thread]

problem mit pack in Perl/Tk

Leser: 1


<< >> 3 Einträge, 1 Seite
#Kein Kommentar
 2008-04-04 20:32
#107881 #107881
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hallo perl/tk-ler,

ich habe ein problem mit pack:

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
use strict;
use warnings;

use Tk;

my $mw =
tkinit ();

my $frame = $mw-> Frame (-relief => 'groove', -bd => 2)-> pack ();
my $text = $mw-> Text ()->pack (-expand => 1);

my $widget =
$frame-> Label (
-text => "Hier ist ein Widget!",
);
my $widget_on = 1;

my $button =
$mw-> Button (
-text => "Widget an/ausschalten",
-command => sub {
if ($widget_on == 0){
$widget-> pack ();
$widget_on = 1;
}
else{
$widget-> packForget ();
$widget_on = 0;
}
}
)-> pack;

Tk::MainLoop ();


dieses beispiel zeigt, dass, wenn ich das widget anzeige und danach dieses wieder verschwinden lasse, der frame trotzdem den raum für dieses widget beibehält. ich möchte allerdings erreichen, dass die ausgangsgröße wiedererreicht wird. jetzt kann ich den frame allerdings nicht durch pack selber verändern, da der frame seine position oberhalb des textfeldes behalten muss.

weiß jemand eine möglichkeit?

betriebsystem ist WinXP mit ActiveState Perl 5.8.8 und Perl/Tk 804.027
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
Spieler
 2008-04-05 02:11
#107891 #107891
User since
2007-09-24
70 Artikel
BenutzerIn
[default_avatar]
Hallo,
meinst du so etwas?
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
use strict;
use warnings;

use Tk;

my $mw =
tkinit ();
my $frame = $mw-> Frame (-relief => 'groove', -bd => 2)-> pack ();

my $text = $mw-> Text ()->pack (-expand => 1);

my $widget =
$frame-> Label (
-text => "Hier ist ein Widget!",
)->pack;
my $widget_on = 1;

my $button =
$mw-> Button (
-text => "Widget an/ausschalten",
-command => sub {
if ($widget_on == 0){
$frame-> pack (-before => $text);
$widget_on = 1;
}
else{
$frame-> packForget ();
$widget_on = 0;
}
}
)-> pack;

Tk::MainLoop ();

Grüße, Christoph
#Kein Kommentar
 2008-04-05 13:11
#107905 #107905
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
danke für die antwort!
jetzt stimmt es fast! ich habe allerdings (was ich zugegeben nicht erwähnt habe) manchmal zwei widgets in dem frame. ich wollte jetzt, wenn man das eine verschwinden lässt, das andere erhalten bleibt und der frame sich wieder auf die größe von einem widget anpasst. wenn aber beide verschwinden, wollte ich den frame auf die optische größe null bringen, ihn aber trotzdem noch gepackt haben. (sorry, hatte ich vorher wirklich nicht gut erklärt). ich habe es jetzt dadurch gelöst, dass ich in den frame noch ein kleinen frame gepackt habe:

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
37
use strict;
use warnings;

use Tk;

my $mw =
tkinit ();

my $frame = $mw-> Frame (-relief => 'groove', -bd => 2)-> pack ();
my $text = $mw-> Text ()->pack (-expand => 1);

my $widget =
$frame-> Label (
-text => "Hier ist ein Widget!",
);
my $widget_2 =
$frame-> Frame (
-height => 0,
)-> pack;
my $widget_on = 1;

my $button =
$mw-> Button (
-text => "Widget an/ausschalten",
-command => sub {
if ($widget_on == 0){
$widget-> pack ();
$widget_on = 1;
}
else{
$widget-> packForget ();
$widget_on = 0;
}
}
)-> pack;

Tk::MainLoop ();


so bleibt zwar oben immer noch ein kleiner frame mit der höhe 1, aber damit kann ich leben.

vielen dank!
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 3 Einträge, 1 Seite



View all threads created 2008-04-04 20:32.