die Fragen gehen mir nicht aus ...

Ich möchte an eine gezeichnete Linie ein Event binden. Sobald der Mousecursor die Linie berührt, soll ein Popup-Fenster erscheinen. Geht so etwas mit wx?
Hier mal ein Beispielcode:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import wx
class MainFrame(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
bmpsize = (500, 500)
self.bmp = self.get_base_bitmap(bmpsize)
self.Bind(wx.EVT_PAINT, self.on_paint)
self.SetSizeHintsSz(bmpsize)
def get_base_bitmap(self, size):
bmp = wx.EmptyBitmap(*size)
dc = wx.MemoryDC(bmp)
dc.SetBackground(wx.WHITE_BRUSH)
dc.Clear()
dc.SelectObject(wx.NullBitmap)
return bmp
def on_paint(self, event):
dc = wx.BufferedPaintDC(self, self.bmp, style = wx.BUFFER_VIRTUAL_AREA)
self.drawLine(dc)
def drawLine(self, dc):
color = 'blue'
dc.SetPen(wx.Pen(color,width=2, style=wx.SOLID))
line = dc.DrawLine(50, 50, 350, 200)
#line.Bind(wx.EVT_ENTER_WINDOW, self.onEnterLine)
#line.Bind(wx.EVT_LEAVE_WINDOW, self.onLeaveLine)
def onEnterLine(self, event):
sleep(0.25)
pos = self.GetPosition()
mousex = wx.MouseEvent.GetX(event) + pos[0]
mousey = wx.MouseEvent.GetY(event) + pos[1] + 100
self.popup = Popupwindow(mousex, mousey)
def onLeaveLine(self, event):
self.popup.Destroy()
def main():
app = wx.PySimpleApp()
frame = wx.Frame(parent=None)
x = MainFrame(frame)
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
Code: Alles auswählen
Traceback (most recent call last):
File "./testdatei.py", line 24, in on_paint
self.drawLine(dc)
File "./testdatei.py", line 30, in drawLine
line.Bind(wx.EVT_ENTER_WINDOW, self.onEnterLine)
AttributeError: 'NoneType' object has no attribute 'Bind'
Grüße
Mawilo