Cursorposition an Popup übergeben

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

ich möchte an der aktuellen Cursorposition ein Popupwindow anzeigen. Das Popup soll nach 2 Sekunden wieder verschwinden. Wird der Cursor eher von dem Punkt wegbewegt, soll das Popup sofort verschwinden.

Hier mal ein Beispiel:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx
import time

class MainPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.Bind(wx.EVT_MOTION, self.setInfoPopup)
        
    def setInfoPopup(self, event):
        x = event.GetX()
        y = event.GetY()
        time.sleep(0.3)
        popup = InfoPopup(self, x, y)
        
class InfoPopup(wx.PopupWindow):
    def __init__(self, parent, x, y):
        wx.PopupWindow.__init__(self, parent)
        lb = '%s - %s'%(x, y)
        txt = wx.StaticText(self, -1, label=lb)
        sz = txt.GetBestSize()
        self.SetSize((sz.width, sz.height))
        self.Show()
       
    def deletePopup(self):
        self.Show(False)
        self.Destroy()
            
def main():
    app = wx.PySimpleApp()
    frame = wx.Frame(parent=None)
    x = MainPanel(frame)
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()
Leider wird das Popupfenster in der linken oberen Monitorecke angezeigt :cry:. Das automatische verschwinden habe ich noch gar nicht hinbekommen.

Habt ihr ein paar Tips für mich?

Mawilo
Antworten