Schrift
[thread]5286[/thread]

Checkbuttons und pack()...: Anordnung von Checkbuttons

Leser: 3


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
TheDHK
 2007-01-25 18:50
#46156 #46156
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Hi,
ich habe ein Skript mit mehreren Checkbuttons. Das sieht so aus: http://img401.imageshack.us/img401/3923/suchoptionen0wk.jpg

Jetzt möchte ich aber nicht, dass alle Checkbuttons in einer Reihe sind, sprich ich will, dass "'AlltheWeb" eine Reihe weiter unten steht. Zunächst mal hier das Skript für die Checkbuttons:

Code (perl): (dl )
1
2
3
my $pageframe = $page1 -> Frame (-background => 'sky blue');
$pageframe -> pack();
$pageframe->Checkbutton(-text=>"AlltheWeb", -font=>'{Bimini} 12 {bold}', -background=>'sky blue', -activebackground=>'sky blue', -variable=>\$value)->pack(-side=>'left');


Um "AlltheWeb" eine Reihe tiefer zu bekommen, hab ich schon Folgendes probiert:
Code (perl): (dl )
$pageframe->Checkbutton(-text=>"AlltheWeb", -font=>'{Bimini} 12 {bold}', -background=>'sky blue', -activebackground=>'sky blue', -variable=>\$value)->pack(-side=>'bottom');


Das hat leider nicht geklappt. Weiß jemand, wie man "AlltheWeb" eine Reihe tiefer bekommt? Vielen Dank.

Gruß

TheDHK\n\n

<!--EDIT|TheDHK|1169743867-->
renee
 2007-01-25 19:04
#46157 #46157
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist das der einzige Checkbutton auf $pageframe? Dann musst Du das -side => 'left' für den Frame machen...
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/
TheDHK
 2007-01-26 14:55
#46158 #46158
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Nein, es sind mehrere Checkbuttons die ich eigentlich mit einer for-Schleife erzeuge:
Code (perl): (dl )
1
2
3
4
5
6
7
my $pageframe = $page1 -> Frame (-background => 'sky blue');
  $pageframe -> pack();
# ...
for(my $i = 0;$i < 4;$i++) {
    $pageframe->Checkbutton(-text=>$av_searches[$i], -font=>'{Bimini} 12 {bold}', -background=>'sky blue', 
-activebackground=>'sky blue', -variable=>\$value)->pack(-side=>'left');
  }


Diese vier Checkbuttons kann mach auch auf dem oben schon geposteten Screenshot erkennen. Wie gesagt will ich aber, dass immer drei Checkbuttons in einer Reihe sind und der vierte jeweils in die nächste Reihe kommt (zu mehr Details siehe 1. Post).

Gruß

TheDHK\n\n

<!--EDIT|TheDHK|1169816150-->
PerlProfi
 2007-01-26 15:28
#46159 #46159
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Dann kannst du doch den 4. auf die page packen.
Oder spricht was dagegen?

MfG PerlProfi
TheDHK
 2007-01-26 18:35
#46160 #46160
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
@PerlProfi: Hab ich probiert, hat aber auch nicht den gewünschten Effekt erzielt:
Code (perl): (dl )
$page1->Checkbutton(-text=>"Test", -font=>'{Bimini} 12 {bold}', -background=>'sky blue', -activebackground=>'sky blue', -variable=>\$value)->pack(-side=>'bottom');


Hab das ganze auch mit -side=>'top', 'left' und 'right' probiert, hat aber alles nicht den gewünschten Effekt erzielt.

Gruß

TheDHK
ptk
 2007-01-26 23:33
#46161 #46161
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn du mehrere Reihen brauchst, solltest du für jede Reihe ein eigenes Frame erzeugen.
TheDHK
 2007-01-27 11:40
#46162 #46162
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Hab das mal so provisorisch ausprobiert und das hat geklappt. Nur, wie kann ich das mit einer for-Schleife realisieren? Hab das mal so probiert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $pageframe = $page1 -> Frame (-background => 'sky blue');
  $pageframe -> pack(-side => 'top');
  my $zweiterframe = $page1 -> Frame (-background => 'sky blue');
  $zweiterframe -> pack(-side => 'bottom');
  $pageframe->Label(-text=> 'Hier finden Sie alle in Scrutator verfügbaren Suchmaschinen.', -font=>'{Bimini} 12 {bold}', -background=>'sky blue')->pack();
  for(my $i = 0;$i < 6;$i++) {
    my $frameverwendung = $pageframe;
    $frameverwendung->Checkbutton(-text=>$av_searches[$i], -font=>'{Bimini} 12 {bold}', -background=>'sky blue', -activebackground=>'sky blue', -variable=>\$value)->pack(-side=>'left');
    $checkbuttonzahl++;
    if($checkbuttonzahl == 3) {
      my $chechbuttonzahl = 0;
      $frameverwendung = $zweiterframe;
    }
  }


Das soll so funktionieren: Wenn $checkbuttonzahl 3 ist, soll sie auf null zurückgesetzt werden. Gleichzeitig sollen die jetzt folgenden Checkbuttons in $zweiterframe geladen werden. Leider erscheinen immer noch alle Checkbuttons in einer Reihe. Hat jemand einen Tipp für mich, wie man das ganze realisieren könnte? Sprich, dass der Frame, in den die Checkbuttons geladen werden, während der Schleife gewechselt wird?

Gruß

TheDHK
PerlProfi
 2007-01-27 13:45
#46163 #46163
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Versuch es mal in etwa so:
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
my $headline = $page1->Label(
-text => 'Hier finden Sie alle in Scrutator verfügbaren Suchmaschinen.',
-font => '{Bimini} 12 {bold}',
-background => 'sky blue')
->pack(-side => "top");

# in $frame ist der aktuelle Frame für die jeweilige Zeile enthalten
my $frame;

# in $anz steht die Anzahl der Suchmaschinen
my $anz = 6;

for my$i (1..int($anz/3))
{
# jetzt erstmal einen Frame erzeugen
$frame = $page1->Frame(-background => 'sky blue')
->pack(-side => "top");

# dann kann man die 3 nächsten Suchmaschinen eintragen
for my$j ($i..$i*3)
{
$frame->Checkbutton(-text => $av_searches[$j-1],
-font => '{Bimini} 12 {bold}',
-background => 'sky blue',
-activebackground => 'sky blue',
-variable => \$value)->pack(-side => "left");
}
}

Den code musst du natürlich noch anpassen, eventuell funktioniert er so auch noch nicht, hab gerade keine Zeit zum testen.

Du könntest natürlich auch grid() benutzen und dann die Reihen raufzählen.

MfG PerlProfi
TheDHK
 2007-01-27 16:48
#46164 #46164
User since
2007-01-19
37 Artikel
BenutzerIn
[default_avatar]
Vielen Dank für dein Perl-Skript, PerlProfi. Es funktioniert, jedoch gibt es nur noch ein Problem: Die angezeigten Suchmaschinen erhöhen sich in jeder Zeile. Also in etwa so:
| 1. Reihe: 3 Suchmaschinen-Checkbuttons |
| 2. Reihe: 5 Suchmaschinen-Checkbuttons |
...

Ich vermute mal, dass liegt daran, dass irgendeine Variable erhöht wird und diesen Effekt verursacht. Liegt es vielleicht daran?
Code (perl): (dl )
for my $j ($i..$i*3)


Schließlich multiplizierst du $i mit 3. Hast du noch eine Idee, an was diese merkwürdige Darstellungsweise liegt?

Gruß

TheDHK
renee
 2007-01-27 16:54
#46165 #46165
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das sollte wohl eher $i..$i+3 heißen...
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/
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-01-25 18:50.