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

hilfe beim erstellen

Leser: 1


<< >> 6 Einträge, 1 Seite
kale_1990
 2007-01-13 15:03
#46118 #46118
User since
2006-09-12
104 Artikel
BenutzerIn
[default_avatar]
hallo, ich komm irgendwie mit dem ausrichten nicht klar...ich mach mir geraden einen datenbankbrowser....zum verbinden hab ich folgendes

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Hosteingabe
$frame11->Label(-text=> "Datenbankhost: ")->pack();
$host = $frame11->Entry(-width=> "15")->pack();

# Usereingabe 
$frame11->Label(-text=> "User: ")->pack();
$user = $frame11->Entry(-width=> "15")->pack();

# Passworteingabe
$frame11->Label(-text=> "Passwort: ")->pack();
$passwd = $frame11->Entry(-width=> "15")->pack();    

# Verbinden                 
 $frame11->Button(-text=> "Verbinden")->pack();


ich möchte nun das es so aussieht:
Datenbankhost: [entryfeld]
User: [entryfeld]
Passowrt: [entryfeld]
[verbindenbutton]
wie müssen denn die angaben bei pack() aussehen..mit side und anchor...ich komm einfach nicht klar\n\n

<!--EDIT|kale_1990|1168693490-->
THERE'S MORE THAN ONE WAY TO DO IT - TMTOWTDI

EASY THINGS SHOULD BE EASY - HARD THINGS SHOULD BE POSSIBLE
GoodFella
 2007-01-13 15:42
#46119 #46119
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Ich komme mit ->pack auch nicht klar, weswegen ich place bevorzuge; wenns nicht anders geht, nehme ich auch grid. pack benutze ich nur zu Testzwecken.

Die Syntax für place ist:

Code: (dl )
1
2
my ($x, $y) = (20, 20);
$widget->place( -x => $x, -y => $y);


Platziert $widget 20 Pixel von links und 20 Pixel unterhalb der oberen linken Ecke.
betterworld
 2007-01-13 15:54
#46120 #46120
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Fuer so etwas ist grid wohl besser geeignet.

Bei dem von GoodFella genannten place muss man sich die Koordinaten selbst ausdenken, wozu man aber die Ausmaßen der Widgets in Betracht ziehen muss. Bei grid hingegen muss man nur sagen, was an welcher Position stehen soll.\n\n

<!--EDIT|betterworld|1168696497-->
ptk
 2007-01-13 16:13
#46121 #46121
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
place ist meistens eine schlechte Idee, weil man dann von der Zeichensatzgröße abhängig ist. Und diese kann von Rechner zu Rechner unterschiedlich sein.
PerlProfi
 2007-01-13 19:14
#46122 #46122
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
@kale_1990 so, wie du es darstellst, könntest du mit LabEntry() arbeiten.
Allerdings wären dann die Eingabefelder nicht genau untereinander, sondern, so wie du geschrieben hast, direkt hinter dem jeweiligen Label.

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
#!/usr/bin/perl
use strict;
use warnings 'all';
use Tk;
use Tk::LabEntry;

# Frame erstellen(hier MainWindow als Frame Ersatz)
my $mw = tkinit();

# erstellen der (Text-)Eintragsfelder
my($dbhost, $user, $passwd) = ("","","");

$mw -> LabEntry ( -label => "Datenbankhost: " ,
-labelPack => [ -side => "left" ] ,
-textvariable => \$dbhost ,
-background => "white" )
-> pack ( -anchor => "w" );
$mw -> LabEntry ( -label => "User: " ,
-labelPack => [ -side => "left" ] ,
-textvariable => \$user ,
-background => "white" )
-> pack ( -anchor => "w" );
$mw -> LabEntry ( -label => "Passwort: " ,
-labelPack => [ -side => "left" ] ,
-textvariable => \$passwd ,
-background => "white" )
-> pack ( -anchor => "w" );

# verbinden button erstellen
$mw -> Button ( -text => "Verbinden" ,
-command => sub { print("DBHost: $dbhost\nUser: $user\nPassword: $passwd\n") } )
-> pack ( );

MainLoop;

Ich würde dir allerdings zu grid() raten und die Labels und Entrys seperat gridden. Meiner Meinung nach sieht es dann schöner aus.

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
#!/usr/bin/perl
use strict;
use warnings 'all';
use Tk;
use Tk::LabEntry;

# Frame erstellen(hier MainWindow als Frame Ersatz)
my $mw = tkinit();

# erstellen der (Text-)Eintragsfelder
my($dbhost, $user, $passwd) = ("","","");

my $i = 0;
foreach (["Datenbankhost: ", \$dbhost],
["User: ", \$user],
["Passwort: ", \$passwd])
{
$mw -> Label ( -text => $_->[0] ,
-anchor => "w" )
-> grid ( -row => $i ,
-column => 0 ,
-sticky => "ew" );
$mw -> Entry ( -textvariable => $_->[1] ,
-background => "white" )
-> grid ( -row => $i++ ,
-column => 1 );
}

# erstellen des verbinden buttons
$mw -> Button ( -text => "Verbinden" ,
-command => sub { print("DBHost: $dbhost\nUser: $user\nPassword: $passwd\n") } )
-> grid ( -row => $i ,
-column => 0 ,
-columnspan => 2 ,
-ipadx => 15 ,
-pady => 2 );

MainLoop;


MfG PerlProfi\n\n

<!--EDIT|PerlProfi|1168709251-->
kale_1990
 2007-01-14 13:35
#46123 #46123
User since
2006-09-12
104 Artikel
BenutzerIn
[default_avatar]
ok danke...werd mir die möglichkeiten ein wenig durchschaun und probiern....s macht ja nix wenn die entryfelder direkt hinter dem label stehen....aber danke!
THERE'S MORE THAN ONE WAY TO DO IT - TMTOWTDI

EASY THINGS SHOULD BE EASY - HARD THINGS SHOULD BE POSSIBLE
<< >> 6 Einträge, 1 Seite



View all threads created 2007-01-13 15:03.