Bind an ein device context Objekt
Verfasst: Donnerstag 28. Februar 2008, 16:44
Hallo,
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:
Wenn ich die Zeilen 30 und 31 aktiviere, bekomme ich folgende Fehlermeldung:
Hat jemand eine Idee für mich?
Grüße
Mawilo
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