Schrift
[thread]4852[/thread]

Label-Größe & Textänderung: Größe halten

Leser: 1


<< |< 1 2 >| >> 17 Einträge, 2 Seiten
pktm
 2005-01-16 17:58
#42779 #42779
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Ich habe da ein Label, welches den maximal verfügbaren Platz in seinem Master(Frame) einnehmen soll, aber dem ich keine fixe Größe zuweisen kann (zu faul).
Jetzt verändert sich die Größe des Labels immer wenn ich den Text mittels configure verändere.
Wie kann ich dieses verhindern?
Mit packPropagate(0); geht es nicht, da kommt nur Murks bei rum.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# mein Label
# cnt aus Schleife
$fixedTable->[$cnt]->{'Text'} = $fixedDaten->Label(
-text => $val,
-font => $fixedDaten->Font(-weight=>'normal',-size=>16,),
-wraplength => ($mw->screenwidth() - $imageFrame->reqwidth()) - $pfeil->width(),
-justify => 'left',
-bd => 3,
- relief => 'raised',
);
$fixedTable->[$cnt]->{'Text'}->grid(
-column=>2,
-row=>$cnt,
-ipadx => 0,
-padx => 0,
-columnspan=>2,
-sticky => "nswe",
);


mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2005-01-16 19:05
#42780 #42780
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Benutze -textvariable
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use Tk;
my $i = 0;
my $labeltext = '';
my $mw = MainWindow->new(-title=>'Labeltest');
$mw->minsize(500,200);
$mw->Label(-textvariable=>\$labeltext,-background=>'red')->pack(-fill=>'both');
$mw->Button(-text=>'Verändere Text',-command=>\&veraendere_text)->pack();
$mw->Button(-text=>'Quit',-command=>sub{$mw->destroy();})->pack();

MainLoop;

sub veraendere_text () {
my @text = qw/Labeltext1 Labeltext2 Text3 etc/;
$labeltext = @text[$i];
$i = 0 if $i++ >= 3;

}


Gruß Alex
pktm
 2005-01-16 23:30
#42781 #42781
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hm, habe ich mir auch überlegt, aber das ändert blaube ich nicht das Problem - oder?
Die Änderung wird übrigens von einem Timer durchgeführt.
http://www.intergastro-service.de (mein erstes CMS :) )
format_c
 2005-01-17 00:19
#42782 #42782
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
MMh ich lege die Breite des Label mittels pack fest und damit gehts ja. Ob -textvariable mit -wraplength funktioniert hab ich nicht probiert. Also Probier doch mal meinen Code aus. Macht er das was er soll?

Gruß Alex
format_c
 2005-01-17 00:24
#42783 #42783
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
MMh mit configure gehts bei mir auch. Ok das Problem ist wohl, dass der paramter -wraplength mit configure überschrieben wird. Aber dann müsste doch -textvariable erst recht funktionieren. Warum nimmst du nicht pack?

Gruß Alex
ptk
 2005-01-17 11:29
#42784 #42784
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Mit packPropagate sollte es gehen --- vielleicht wendest du es nur falsch an?
format_c
 2005-01-17 16:56
#42785 #42785
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Off: DAs ist echt der Hammer. ptk weis echt alles was Tk angeht.

Gruß Alex
Crian
 2005-01-17 19:52
#42786 #42786
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Daher der Nick ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
pktm
 2005-01-17 23:59
#42787 #42787
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
zu packPropagate siehe oben.
Hier ist übrigens mein code (woraus, für mich zumindest ersichtlich ist, warum ich grid verwende):
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
my $fixedTable = [];
my $fixedDatenObj = {}; # Referenzen zu allen Objekten (z.B. Preis) die in der fixedTabelle
                       # stehen (zwecks Zugriff zur späteren Modifikation)
                       # Quasi das Selbe wie $fixedtabel = [], nur dass es keine Arrayref ist

for( my $cnt=0; $cnt <= $#{$glob->{'actualObject'}->{'FixedData'}}; $cnt++ ){

   # -[A]- Tabelle erstellen

   # -[1]- zuerst den Textteil um zu sehen, ob man den Spacer vergrößern muss
   # Aktuellen Eintrag auslesen (ist immer nur einer)
   my ($key, $val) = %{$glob->{'actualObject'}->{'FixedData'}->[$cnt]};
   utf8::encode($glob->{'actualObject'}->{'FixedData'}->[$cnt]->{$key});
#    print "k: $key, v: $val\n";
   $fixedTable->[$cnt]->{'Text'} = $fixedDaten->Label(
#        -text       => $val,
       -textvariable => \$glob->{'actualObject'}->{'FixedData'}->[$cnt]->{$key},
       -font       => $fixedDaten->Font(-weight=>'normal',-size=>16,),
       -wraplength => ($mw->screenwidth() - $imageFrame->reqwidth()) - $pfeil->width(),
       -justify    => 'left',
       -bd => 3,
       - relief => 'raised',
   );
#    # create Font
#    $fixedTable->[$cnt]->{'Text'}->configure(
#        -font => $mw->Font(-family => 'Verdana',),
#    );

   # -[2]- jetzt den Pfeil und den Spacer
   $fixedTable->[$cnt]->{'Grafik'} = $fixedDaten->Frame(-bd => 0,);
   $fixedTable->[$cnt]->{'Pfeil'} = $fixedTable->[$cnt]->{'Grafik'}->Label(-image => $pfeil,-bd => 0,);
   $fixedTable->[$cnt]->{'Spacer'} = $fixedTable->[$cnt]->{'Grafik'}->Label(-image => $pfeilSpacer,-bd => 0,);

   # Größe des Spacers dem Text anpassen
   main::berechneSpacer($mw, $pfeil, $pfeilSpacer, $fixedTable->[$cnt]);

       # keine Unterscheidung zwischen leztem undn nicht letztem Eintrag, da
       # noch weitere Angaben folgen
       $fixedTable->[$cnt]->{'Pfeil'}->pack(
           -anchor=>'n',
           -expand =>1,
           -side =>'top',
           -ipadx => 0, -ipady => 0,
           -padx  => 0, -pady  => 0,
       );
       $fixedTable->[$cnt]->{'Spacer'}->pack(
           -fill=>"y",
           -anchor=>'n',
           -expand =>1,
           -side =>'top',
           -ipadx => 0, -ipady => 0,
           -padx  => 0, -pady  => 0,
       );
   
   # -[3]- Objekte in ReferenzHash ablegen um später Zugriff haben zu können
   $fixedDatenObj->{$key}->{'Text'} = $fixedTable->[$cnt]->{'Text'};
   $fixedDatenObj->{$key}->{'Grafik'} = $fixedTable->[$cnt]->{'Grafik'};
   $fixedDatenObj->{$key}->{'Pfeil'} = $fixedTable->[$cnt]->{'Pfeil'};
   $fixedDatenObj->{$key}->{'Spacer'} = $fixedTable->[$cnt]->{'Spacer'};

   # -[B]- jetzt noch alles zusammenpacken
   $fixedTable->[$cnt]->{'Grafik'}->grid(
       -column=>1,
       -row=>$cnt,
       -sticky => "ns",
   );
   $fixedTable->[$cnt]->{'Text'}->grid(
       -column=>2,
       -row=>$cnt,
       -ipadx => 0,
       -padx => 0,
       -columnspan=>2,
       -sticky => "nswe",
   );
} # /for

################################################################################


Ich kommentiere mir jetzt mal an, dass ich ein bischen mit packPropagate rumexperimentieren soll :)
http://www.intergastro-service.de (mein erstes CMS :) )
Ishka
 2005-01-18 00:11
#42788 #42788
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ich mach das immer so:
Code: (dl )
1
2
3
4
my $text='Hallo';
$main->Label(-textvariable=>\$text,-width=>20)->pack;

$main->after(1500=>sub {$text="Hallo Welt"});
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-01-16 17:58.