Schrift
[thread]4759[/thread]

TopLevel positionieren: in der Mitte von MainWindow

Leser: 1


<< |< 1 2 >| >> 15 Einträge, 2 Seiten
format_c
 2004-04-23 21:10
#41960 #41960
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi,
Wie kann ich ein TopLevel Window in der Mitte des MainWindows positionieren auch nach dem ich das MainWindow von der ursprünglichen Position wegbewege?

Gruß Alex
Rambo
 2004-04-24 00:09
#41961 #41961
User since
2003-08-14
803 Artikel
BenutzerIn

user image
evtl. so?
Code: (dl )
$toplevel->geometry("100x100+10+10");

bedeutet breite 100 höhe 100 und 10 pixel der linken oberen
ecke entfernt plaziert.

fürti remo
Crian
 2004-04-24 05:34
#41962 #41962
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
[quote=Rambo,23.04.2004, 22:09]evtl. so?
Code: (dl )
$toplevel->geometry("100x100+10+10");

bedeutet breite 100 höhe 100 und 10 pixel der linken oberen
ecke entfernt plaziert.

fürti remo[/quote]
Das bezieht sich aber auf den Bildschirm, nicht aufs MainWindow.


hmmmm  ...  am Anfang kannst Du Dir die geometry des MainWindows holen und daraus ableiten, wie Du die des Toplevels setzen musst. Danach ... hmmm entweder per repeat eine Funktion triggern, die jede Sekunde die Geometry nachzieht, oder besser Callbacks für Größen- und Positionsänderungen des Mainwindows hinterlegen, falls das geht.\n\n

<!--EDIT|Crian|1082770520-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
format_c
 2004-04-24 16:04
#41963 #41963
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ja ich will nicht, dass das TopLevel sich mit dem MainWindow bewegt. nur zum zeitpunkt wo das Toplevel erstellt wird in der Mitte des MainWindows.

Gruß Alex
format_c
 2004-04-24 16:07
#41964 #41964
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Also ich mit screenwidth und screenheight bekomme ich die momentane Größe des MainWindows.
Also brauche ich eine Funktion oder Eigenschaft die mir verrät welche Position das MainWindow im Moment hat.

Gruß Alex
Crian
 2004-04-24 18:33
#41965 #41965
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
ja, geometry, wie ich oben schrieb ;-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
format_c
 2004-04-24 23:11
#41966 #41966
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Auch genau. Jetzt klappt es.

Danke.
Nochwas...
Jetzt kann ich so lange ich keine Label in dem Toplevel erstelle oder frames das Toplevel so ausehen lassen und da erscheinen lassen wo ich will.
Jedoch sobald ich irgendetwas in das Toplevel packe passt sich dessen Größe an an das Objekt an.

Soll es aber nicht. Hier der Code auschnitt:
Code: (dl )
1
2
3
my $tl_window = $mw->Toplevel(-title=>'Fortschritt',-width=>$w,-height=>$h);
my $frame_text = $tl_window->Frame()
->pack(-expand=>1,-fill => 'both');


Weist was ich falsch mache?

Gruß Alex
Crian
 2004-04-25 00:44
#41967 #41967
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Du kannst mit minsize und maxsize (oder so ähnlich) die Größe exakt festlegen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Rambo
 2004-04-25 12:23
#41968 #41968
User since
2003-08-14
803 Artikel
BenutzerIn

user image
wie hast du es denn jetzt genau gemacht mit demTL das
es zentriert auf dem MW erscheint?
hab gestern noch gestöbert aber dann irgendwann aufgegeben :-)

fürti rambo
format_c
 2004-04-25 15:38
#41969 #41969
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
So:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    my $w = 250;
my $h = 200;
# Top-Level Fenster erzeugen
my $tl_window = $Config{main_window}
->Toplevel(-title => 'Über Kontoauszüge',
-width => $w,
-height => $h
);
my ($width,$height,$pos_x,$pos_y) = split /\+|x/,$Config{main_window}->geometry();

# Top Level in Mitte des MainWindows positionieren
$tl_window->geometry('+' .
int ($width / 2 + $pos_x - $w / 2) .
'+' .
int ($height / 2 + $pos_y - $h / 2)
);


Gruß Alex
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-04-23 21:10.