![]() |
![]() |
10 Einträge, 1 Seite |
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
### hier der Aufruf: ###
&zentriere_fenster($mw); # Parameter 1: Übergibt die Fenstervariable; Parameter 2: Verschiebung der X-Achse; Parameter 3: Verschiebung der Y-Achse
### hier ein Beispiel-Aufruf mit Parameter-Werten: ###
&zentriere_fenster($mw,0,-20);
#### hier die SUB: ####
#### Diese Subroutine Berechnet die zentrierte Darstellung auf dem Bildschirm ####
sub zentriere_fenster {
my $widget = shift; # Fenster als Übergabeparameter
my $x_ver = shift; # Verschiebung auf der X-Achse vom Zentrum (bei positiven Wert Verschiebung nach rechts. Negativ für links)
my $y_ver = shift; # Verschiebung auf der X-Achse vom Zentrum (bei positiven Wert Verschiebung nach unten. Negativ für oben)
#### Platzierung des Infofensters auf dem Bildschirm ermitteln und mittig anordnen ####
$widget->update; # Werte werden geupdatet, damit die tatsächliche Breite und Höhe ermittelt werden kann
my $tats_breite = $widget->width(); # Tatsächliche Breite wird ermittelt
my $tats_hoehe = $widget->height(); # Tatsächliche Höhe wird ermittelt
my @aktuelle_b_aufloesung = ($breite=$mw->screenwidth, $hoehe=$mw->screenheight); # aktuelle Bildschirmauflösung wird in array geschrieben
my @widget_platzierung = (($aktuelle_b_aufloesung[0]/2)-($tats_breite/2)+$x_ver, ($aktuelle_b_aufloesung[1]/2)-($tats_hoehe/2)+$y_ver); # Berechnung für die Mittlere Platzierung auf den Bildschirm
for (@widget_platzierung) # Runden, denn sonst kann es zu Fehlern bei der Methode geometry kommen, denn es können nur ganzzahlige Zahlen benutzt werden
{
$_= sprintf("%.0f",$_);
}
$widget->geometry("+$widget_platzierung[0]+$widget_platzierung[1]"); # Nun wird die Position des Fensters aus den errechneten Werten festgelegt
}
####### hier die SUB nochmal ohne Inline DOKU ########
sub zentriere_fenster {
my $widget = shift;
my $x_ver = shift;
my $y_ver = shift;
$widget->update;
my $tats_breite = $widget->width();
my $tats_hoehe = $widget->height();
my @aktuelle_b_aufloesung = ($breite=$mw->screenwidth, $hoehe=$mw->screenheight);
my @widget_platzierung = (($aktuelle_b_aufloesung[0]/2)-($tats_breite/2)+$x_ver, ($aktuelle_b_aufloesung[1]/2)-($tats_hoehe/2)+$y_ver);
for (@widget_platzierung)
{
$_= sprintf("%.0f",$_);
}
$widget->geometry("+$widget_platzierung[0]+$widget_platzierung[1]");
}
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
sub CenterWidget
{
my $widget = shift;
$widget->update();
my $parent = $widget->parent();
my($pwidth, $pheight, $px, $py) = (0, 0, 0, 0);
if($parent)
{
$pwidth = $parent->width;
$pheight = $parent->height;
$px = $parent->x;
$py = $parent->y;
}
else
{
$pwidth = $widget->screenwidth;
$pheight = $widget->screenheight;
}
my $wwidth = $widget->width;
my $wheight = $widget->height;
my $posx = $px + int(($pwidth / 2) - ($wwidth / 2));
my $posy = $py + int(($pheight / 2) - ($wheight / 2));
$widget->geometry($wwidth . 'x' . $wheight . '+' . $posx . '+' . $posy);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $MamaGUI = new MainWindow( -title => "Mein Programm");
# Größe des Fensters:
my $windowHeight = "600";
my $windowWidth = "800";
# Bildschirmgröße holen:
my $screenHeight = $MamaGUI->screenheight;
my $screenWidth = $MamaGUI->screenwidth;
# MamaGUI zentrieren:
$MamaGUI->geometry($windowWidth."x".$windowHeight);
$MamaGUI->geometry("+" .
int($screenWidth/2 - $windowWidth/2) .
"+" .
int($screenHeight/2 - $windowHeight/2)
);
![]() |
![]() |
10 Einträge, 1 Seite |