Schrift
[thread]5329[/thread]

Handy-GUI - Mein Programm!: Hilfe!

Leser: 1


<< >> 3 Einträge, 1 Seite
life_heart
 2007-06-10 15:46
#46439 #46439
User since
2007-05-30
12 Artikel
BenutzerIn
[default_avatar]
Hallo!

Mein Beispiel sieht folgendermaßen 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
39
40
41
42
43
44
45
46
#!/usr/bin/perl

use strict;
use warnings;
use Tk;

# Hauptfenster
my $nw = MainWindow->new();

# Titel des Hauptfensters
$nw->title ('Man-Machine Interfaces II - UE - BSP 3');

# Menü
my $mbar = $nw -> Menu();
$nw->configure (-menu => $mbar);
my $file = $mbar->cascade (-label => "File", -underline => 0, -tearoff => 0);
$file->command (-label => "Exit", -command => [$nw => 'destroy']);

# Frames
my $f1 = $nw->Frame()->pack (-side => 'top', -expand => 1, -fill => 'both');
my $f2 = $nw->Frame()->pack (-side => 'left', -expand => 1, -fill => 'both');
my $f3 = $nw->Frame()->pack (-side => 'bottom', -expand => 1, -fill => 'both');

# Buttons
my $b1 = $f1->Frame (-borderwidth => 3, -relief => 'groove')->pack (-side => 'top', -expand => 1, -fill => 'both');
my @buttonwahl1 = ('1', '2', '3');
for my $a (0..$#buttonwahl1)
{
$b1->Button (-text => $buttonwahl1[$a], -command => sub {print "$buttonwahl1[$a]"})->pack (-anchor => 'e');
}

my $b2 = $f2->Frame (-borderwidth => 3, -relief => 'groove')->pack (-side => 'left', -expand => 1, -fill => 'both');
my @buttonwahl2 = ('4', '5', '6');
for my $b (0..$#buttonwahl2)
{
$b2->Button (-text => $buttonwahl2[$b], -command => sub {print "$buttonwahl2[$b]"})->pack (-anchor => 'e');
}

my $b3 = $f3->Frame (-borderwidth => 3, -relief => 'groove')->pack (-side => 'bottom', -expand => 1, -fill => 'both');
my @buttonwahl3 = ('7', '8', '9', '0');
for my $c (0..$#buttonwahl3)
{
$b3->Button (-text => $buttonwahl3[$c], -command => sub {print "$buttonwahl3[$c]"})->pack (-anchor => 'e');
}

MainLoop();


Im Fenster sollten die Buttons eigentlich so gereiht und gleich groß sein:


1 2 3
4 5 6
7 8 9
 0


Wie könnte ich das machen?

Als erweiterte Funktionalität könnte man noch die Sternchen- & Raute-Taste dazugeben bzw. zu jeder Zahl auch die Buchstaben (z. B.: bei 1 wäre dann a b c). Wie könnte ich das denn realisieren? Falls ich die erweiterte Funktionaltität nicht habe, ist es kein Problem, da man es nach Belieben machen kann und daher kein Muss ist.

Vielen lieben Dank für eure Hilfe.

LG!\n\n

<!--EDIT|life_heart|1181480914-->
ptk
 2007-06-10 21:26
#46440 #46440
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Statt ->pack könntest du ->grid verwenden und die Spalte und Reihe explizit angeben. Wenn du gleiche Breiten und Höhen bei den Spalten und Reihen brauchst, kannst du gridColumnconfigure und gridRowconfigure mit der Option -uniform verwenden.

Ungefähr so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use Tk;
$top = tkinit;

# Gitter erzeugen
for (1..9) {
$top->Label(-text => $_)->grid(-row => ($_-1)/3,
-column => ($_-1)%3,
);
}
$top->Label(-text => "0")->grid(-row => 3, -column => 1);

# Gleiche Breiten und Höhen erzwingen:
for (0..2) {
$top->gridColumnconfigure($_, -weight => 1, -uniform => 1);
}
for (0..3) {
$top->gridRowconfigure($_, -weight => 1, -uniform => 1);
}
MainLoop;
#Kein Kommentar
 2007-06-10 21:53
#46441 #46441
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
anstatt grid () könntest du auch CPAN:Tk::Table benutzen
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 2007-06-10 15:46.