fenster verschieben

Plattformunabhängige GUIs mit wxWidgets.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

fenster verschieben

Beitragvon nkoehring » Dienstag 10. Juli 2007, 23:59

Hallo... ich hab mir hier ein kleines Tool gebastelt. Da das Fenster keinen System-Rahmen haben wird, habe ich eine Methode moveWindow implementiert und das Event EVT_LEFT_DOWN daran gehaengt.

Funktionieren tut es wunderbar. Auch das der normale Klick (also EVT_MOUSE_UP, an dem auch etwas haengt) durch einen Boolean verhindert wird.
Meine Frage ist eigentlich nur, ob das okay so ist, oder vielleicht zu Ressourcen-Intensiv? Gibt es eine elegantere Methode als eine while-Schleife?

Aber nun erstmal der Code:

Code: Alles auswählen

    def moveWindow(self, evt):
        mouse = wx.GetMouseState()
        current_position = self.GetScreenPosition()
        delta_x = mouse.x - current_position.x
        delta_y = mouse.y - current_position.y

        while mouse.leftDown:
            pos = wx.Point(mouse.x-delta_x, mouse.y-delta_y)
            self.SetPosition(pos)
            mouse = wx.GetMouseState()

        if not self.GetScreenPosition() == current_position: self.moved = True


Danke :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Mittwoch 11. Juli 2007, 00:31

Hallo nkoehring!

Die Idee kommt vom "ShapedWindow" aus der wxPython-Demo: http://www.python-forum.de/post-64768.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder