Seite 1 von 1

Position von wx.MessageDialog

Verfasst: Donnerstag 21. Februar 2008, 12:01
von snakeseven
Hallo,
eigentlich soll man mit einem Tupel pos=(x,y) die Position eines wx.MessageDialogs bestimmen können. Aber irgendwie klappt das bei mir nicht. Was mache ich falsch?

Code: Alles auswählen

import wx

def testdialog():
    dlg = wx.MessageDialog(None, 'TEST', "Information", wx.OK | wx.ICON_INFORMATION, pos = (100, 100))
    if dlg.ShowModal() == wx.ID_OK:
        pass
    dlg.Destroy()

            
app = wx.App()
testdialog()
app.MainLoop()
Gruß, Seven

Re: Position von wx.MessageDialog

Verfasst: Donnerstag 21. Februar 2008, 12:29
von gerold
snakeseven hat geschrieben:eigentlich soll man mit einem Tupel pos=(x,y) die Position eines wx.MessageDialogs bestimmen können.
Hallo Seven!
pos
Dialog position. Not Windows.
``pos`` wird unter Windows ignoriert.

mfg
Gerold
:-)

Re: Position von wx.MessageDialog

Verfasst: Freitag 22. Februar 2008, 11:06
von snakeseven
pos
Dialog position. Not Windows.
``pos`` wird unter Windows ignoriert.
Blöd :( Könnten sie in 'wxPython In Action' aber auch dazu schreiben :roll:
Muß ich mir wohl selber basteln.

Grüße,
Seven

Re: Position von wx.MessageDialog

Verfasst: Freitag 22. Februar 2008, 11:15
von gerold
snakeseven hat geschrieben:Muß ich mir wohl selber basteln.
Hallo Seven!

Ist ja nicht so schlimm. Habe ich auch schon ein paar mal gemacht:

- http://www.python-forum.de/topic-11487.html
- http://www.python-forum.de/topic-10027.html

mfg
Gerold
:-)

Verfasst: Freitag 22. Februar 2008, 11:41
von Leonidas
Verstehe ich das richtig? Du willst einen Dialog absolut auf dem Desktop positionieren? Da gab es erst letztens eine Diskussion dazu, dass das unter Linux nicht tut und warum das auch schlecht ist.

Verfasst: Samstag 23. Februar 2008, 11:52
von snakeseven
Hi Leonidas,

die Diskussion dazu werde ich mir mal raussuchen, ist sicherlich interessant. Aber mich nervt es, dass Applikation und die dazugehörigen Dialoge z.T. ewig weit voneinander entfernt auf dem Bildschirm platziert sind.
Ich möchte die Dialoge daher wenigstens im Umfeld meiner (kleinen) Applikation positionieren, damit man sie als Anwender nicht ständig suchen muß. Eigentlich müßte das ja gehen? Die Bildschirmkoordinaten sind bekannt und Position und Größe der Applikation auch. Na, mal sehen, ob mich der Ergeiz packt :)

Wiedersprüchlich finde ich allerdings, dass bei Windows einerseits 'pos' deaktiviert ist, andererseits dialog.GetPosition() einen Wert liefert.

Grüße,
Seven

Verfasst: Mittwoch 5. März 2008, 11:23
von Zap
Ich muss hier nochmal einmal kurz nachhaken..

Kennt einer von eine Möglichkeit einen wx.MessageDialog ``CenterOnParent`` zu bekommen?
Also zumindest bei mir unter WinXP funktioniert das nicht.
Ich habe mir bisher auch mit eigenen Dialogklassen ausgeholfen obwohl ich sehr gerne manchmal einfach nur auf den MessageDialog zurück greifen würde.

Re: Position von wx.MessageDialog

Verfasst: Mittwoch 5. März 2008, 12:45
von Francesco
snakeseven hat geschrieben:
pos
Dialog position. Not Windows.
``pos`` wird unter Windows ignoriert.
Blöd :( Könnten sie in 'wxPython In Action' aber auch dazu schreiben :roll:
Muß ich mir wohl selber basteln.

Grüße,
Seven
Robin Dunn freut sich sicher über Anregungen oder Korrekturen.

Vielleicht auch interessant:
http://www.wxpython.org/bookerrata.php und Forum:
http://www.manning-sandbox.com/forum.jspa?forumID=202

Re: Position von wx.MessageDialog

Verfasst: Mittwoch 5. März 2008, 12:47
von Francesco
snakeseven hat geschrieben:
pos
Dialog position. Not Windows.
``pos`` wird unter Windows ignoriert.
Blöd :( Könnten sie in 'wxPython In Action' aber auch dazu schreiben :roll:
Muß ich mir wohl selber basteln.

Grüße,
Seven
IIRC kommt es auch auf das parent an, bzw. ob der Messagedialog system modal ausgegeben wird oder nicht. Wenn nicht, dann wird der Dialog zentriert über dem aktiven Fenster ausgegeben. Ich hoffe, ich irre mich hier nicht.

Nachtrag: Auch das ist nur ein Gedanke, weiss nicht ob das bei System-Dialogen geht. Aber ein MoveWindow Event an das Fenster schicken, vielleicht ginge dies.
Nachtrag: Das funktioniert anscheinend auch nicht.