Hi, I finding difficult to execute this program. The wx.Notebook i created is coming on the splitted frame(self.p2). How do I that. I am started to learn wxPython, and when I run the code, the code doesnot close gracefully, it throughs me an error.
"pythonw.exe has encountered a problem and needs to close. We are sorry for the inconvenience"
I clicked for more information, then I got the error message which I have attached it in text file. Please help me out with this problem.
here is the code.... seems a bit lengthy, sorry about that.
Please help me to find my mistake, and how do I go forward resolving this problem.
import wx
ID_ADD_NEW = 5001
ID_DEACTIVATE = 5002
ID_EXIT = 5003
class _AddNewFund(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
box=wx.StaticBox(self, -1, "Add New Fund")
boxsizer=wx.StaticBoxSizer(box, wx.HORIZONTAL)
t=wx.StaticText(self, -1, "Please select an Excel file to upload new funds.", (20,20))
boxsizer.Add(t, 0, wx.TOP|wx.LEFT, 10)
t=wx.StaticText(self, -1, "This is page one content2", (20,40))
boxsizer.Add(t, 0, wx.TOP|wx.LEFT, 10)
self.text1=wx.TextCtrl(self, -1, "")
b1 = wx.Button(self, 10, " Browse ")
b2 = wx.Button(self, 10, " Upload ", (60, 20))
self.Bind(wx.EVT_BUTTON, self.OnBrowse, b1)
self.Bind(wx.EVT_BUTTON, self.OnUpload, b2)
b1.SetDefault()
b1.SetSize(b1.GetBestSize())
b2.SetSize(b2.GetBestSize())
grid1=wx.FlexGridSizer(0,2,0,0)
grid1.Add( self.text1, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
grid1.Add( b1, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
#grid1.Add( b2, 0, wx.ALIGN_CENTRE|wx.LEFT|wx.RIGHT|wx.TOP, 5 )
border=wx.BoxSizer()
border.Add(boxsizer, 1, wx.EXPAND)
self.SetSizer(border)
boxsizer.Add(grid1, 0, wx.ALIGN_CENTRE)
border.Add(boxsizer, 0, wx.ALIGN_CENTRE)
#print "end ADD NEW class"
def OnBrowse(self, event):
self.dirname=""
d=wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.Open)
if d.ShowModal() == wx.ID_OK:
self.filename=d.GetFilename()
self.dirname=d.GetDirectory()
self.text1.WriteTest(join(os.path.join(self.dirname, self.filename)))
d.Destroy()
def OnUpload(self, event):
pass
class ParentWindow(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Euro Fund manager")
self.createMenu()
self.Bind(wx.EVT_MENU, self.onAddnewfund, id=ID_ADD_NEW)
self.Bind(wx.EVT_MENU, self.onDeactivate, id=ID_DEACTIVATE)
self.Bind(wx.EVT_MENU, self.onExit, id=ID_EXIT)
self.spw=wx.SplitterWindow(self)
self.p1=wx.Panel(self.spw, style=wx.BORDER_NONE)
self.p1.SetBackgroundColour("white")
self.p2=wx.Panel(self.spw, style=wx.BORDER_NONE)
self.spw.SplitVertically(self.p1, self.p2, 200)
self.CreateStatusBar()
def createMenu(self):
menu=wx.Menu()
menu.Append(ID_ADD_NEW, "&Add new fund(s)", "Add new fund(s)")
menu.Append(ID_DEACTIVATE, "&Deactivate fund(s)", "Deactivate fund(s)")
menu.AppendSeparator()
menu.Append(ID_EXIT, "E&xit", "Exit")
menubar=wx.MenuBar()
menubar.Append(menu, "&File")
self.SetMenuBar(menubar)
def onAddnewfund(self, event):
#p=wx.Panel(self.p2)
#print "panel created"
nb=wx.Notebook(self.p2)
#print "notebook created"
addPage=_AddNewFund(nb)
nb.AddPage(addPage, "Add new Fund")
#print "page got added"
sizer=wx.BoxSizer()
sizer.Add(nb, 1, wx.EXPAND)
self.p2.SetSizer(sizer)
#print "end of add function"
def onDeactivate(self, event): pass
def onExit(self, event):
self.Close()
app = wx.App()
frm=ParentWindow()
frm.SetSize((800,500))
frm.Show()
app.SetTopWindow(frm)
app.MainLoop()
thank you,
Regards,
kath