ich habe folgendes Problem: Mein Programm ist ziemlich umfangreich, deshalb habe ich es in mehrere Dateien aufgeteilt. Hier ein kurzer Ausschnitt davon:
prog.py
Code: Alles auswählen
#!/usr/bin/env python
#prog.py
import wx, wx.aui
from MyListCtrl import SearchListCtrl
class MyFrame(wx.Frame): #Hauptfenster(Window)
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, size=(840, 600))
hsplitter = wx.SplitterWindow(self, style = wx.SP_3D | wx.SP_LIVE_UPDATE)
tabs = wx.aui.AuiNotebook(hsplitter)
self.tabs = tabs
panel_unten = wx.Panel(hsplitter)
# ListCtrl mit Sucheinträgen
search_listctrl = SearchListCtrl(tabs)
self.Bind(EVT_START_DOWNLOAD, self.start_download)
tabs.AddPage(search_listctrl, "test")
hsplitter.SplitHorizontally(tabs, panel_unten, 350)
hsplitter.SetMinimumPaneSize(130)
self.Fit()
self.SetSizeHintsSz(self.GetSize())
def start_download(self, event= None):
item_data, item = wx.GetApp().item_container.pop()
print item_data, item
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'Proggi')
frame.Centre()
frame.Show(True)
self.item_container = []
return True
if __name__ == '__main__':
app = MyApp(0)
app.MainLoop()
MyListCtrl.py
Code: Alles auswählen
#!/usr/bin/env python
#MyListCtrl.py
import wx, sys
from wx.lib.newevent import NewEvent
(StartDownloadEvent, EVT_START_DOWNLOAD) = NewEvent()
class SearchListCtrl(wx.ListCtrl):
def __init__(self, parent, size=(-1,-1)):
wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT, size=size)
self.InsertColumn(sys.maxint, u'Titel')
self.SetColumnWidth(0, 500)
self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnDoubleClick)
def OnDoubleClick(self, event):
listctrl = event.GetEventObject()
item = listctrl.GetItem(0)
item_data = listctrl.GetItemData(0)
wx.GetApp().item_container.append([item_data,item])
# Event-Instanz erstellen
evt = StartDownloadEvent()
# Event auslösen
self.ProcessEvent(evt)
Dieser Event soll jetzt in der Frame Klasse aufgefangen werden und dort eine andere Fkt. starten. Leider wird dieser Event in der Frame-klasse nicht aufgefangen.
Kann mir jemand helfen dieses Problem zu lösen?!