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

Linien und Group-boxen

Leser: 3


<< >> 9 Einträge, 1 Seite
theresa
 2008-02-26 12:21
#106342 #106342
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Hallo!
Wieder ich mit einem Paar Kleinigkeiten.

Bin jetzt gerade dabei, eine etwas "umfangreiche" GUI zu basteln, wo es nett wäre, ein Paar Trenner, bzw. organisatorische Boxen zu haben.

Mit Trenner meine ich dünne Linien, nicht Balken. Balken habe ich schon gefunden, mit Frames...
Code: (dl )
1
2
my $sep_frame = $fenster -> Component('Frame' => 'sep_frame')->pack(-expand => 1, -fill => 'both', -side=>"top");
$sep_frame -> Label(-height=>1)->pack(-anchor => 'w', -side => 'left');

Mit Farbe sieht man es. Ich will aber eine Linie.
Die Mindesthöhe ist 1, weit enfernt von der "Höhe" einer Linie.

Mit Group-boxen meine ich Quadrate (auch dünn) mit einem Label an der oberen Linken Ecke.

Vermute dass es so etwas... einfach nicht gibt, deswegen frage ich auch hier nach, vielleicht gibts ein Paar Tricks dafür, oder man kann die von irgendwo runterladen.
Vielen Dank!
MatthiasW
 2008-02-26 15:07
#106356 #106356
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Für die Boxen kannst du einen LabFrame verwenden, der genau dafür gedacht ist.

Ich habe allerdings nicht verstanden, weshalb du die Linien nicht mit Frames erzeugen kannst.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
theresa
 2008-02-27 00:24
#106395 #106395
User since
2007-07-17
90 Artikel
BenutzerIn
[default_avatar]
Hi,
mit Frames muss man muss man beim Label mindestens 1 für die Höhe eingeben, und das ist keine Linie mehr...
Hab noch den Tk::Separator für die Linien entdeckt. Die LabFrames laufen auch, vielen Dank!
MatthiasW
 2008-02-28 17:42
#106468 #106468
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Das Label brauchst du doch gar nicht um eine Linie zu malen, dafür reicht ja schon ein Frame:
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
#!/usr/bin/perl

use strict;
use warnings;

use Tk;

my $mw = tkinit();
$mw->geometry('200x200');

$mw->update;

for my $x ( 1 .. 50 )
{
my $y = sin($x)*100;
my $x1 = 100;
my $x2 = $x1 + $y;

($x1, $x2) = ($x2, $x1) if $x2 < $x1;

$mw -> draw_hl(
$x1,
$x*4,
$x2-$x1,
'darkblue',
);

$mw -> update;
} # for

MainLoop;

#
# draw an horizontal line using a Frame widget
#
sub Tk::Toplevel::draw_hl {
my( $mw, $x, $y, $w, $c ) = @_;

$mw -> Frame(
-width => $w,
-height => 1,
-bd => 0,
-background => $c,
) -> place(
-x => $x,
-y => $y,
);
} # draw_hl

__END__

Das Programm zeichnet eine Sinuskurve um 90° gedreht.
Die Funktion draw_hl() zeichnet dabei jeweils eine horizontale Linie.
Für eine vertikale Linie müssen die Werte von -width und -height nur vertauscht werden.
Für relative Höhen, Breiten und Koordinaten bieten sich natürlich andere geometry manager an.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
#Kein Kommentar
 2008-02-28 17:45
#106469 #106469
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
@theresa:

wenn du dir den quelltext von Tk::Separator anguckst, siehst du das das modul
auch mit frames arbeitest...


edit: @
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
MatthiasW
 2008-02-28 18:13
#106471 #106471
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Und was möchtest du mir damit jetzt sagen?

Mit dem Beispiel wollte ich nicht sagen: Benutz nicht das Modul sondern mach es so! ( wäre ja auch Blödsinn, da der Code nicht wirklich sauber ist )
Es sollte nur zeigen, wie man eine Linie nur mit einem Frame zeichnet, was imho das Hauptproblem ist und sich theresa anscheinend den Quelltext von Tk::Separator auch noch nicht angesehen hat.
In erster Linie soll man ein Modul ja auch verwenden.

MfG

edit: verwenden hervorgehoben
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
#Kein Kommentar
 2008-02-28 18:21
#106472 #106472
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
mein beitrag war nicht an dich gerichtet, sondern an theresa...
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
MatthiasW
 2008-02-28 18:26
#106473 #106473
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Okay, hatte das wegen der Anordnung der Antworten wohl falsch aufgefasst.
Schade das es keine Alternative Baumansicht gibt.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
#Kein Kommentar
 2008-02-28 18:29
#106474 #106474
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
hatte eben mein '@' vergessen... *mea culpa* :-]
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
<< >> 9 Einträge, 1 Seite



View all threads created 2008-02-26 12:21.