This is a simple text editor I am writing and the OnSave function wont seem to work. I am writing this half so I can learn python and half to make my own custom codding text editor. What have I done wrong? Also, any tips on text highlighting like in notepad++ or IDLE so I can do some coding in it? Thanks!
import wx import os ID_ABOUT=101 ID_OPEN=102 ID_SAVE=103 ID_BUTTON1=300 ID_EXIT=200 class MainWindow(wx.Frame): def __init__(self, parent, title): wx.Frame.__init__(self, parent, wx.ID_ANY, title) #Editor and Status Bar self.control = wx.TextCtrl(self, 1, style = wx.TE_MULTILINE,pos = (60, 60), size = (700, 400)) statusBar = self.CreateStatusBar() #Creating the Menu Bar #And other such things menubar = wx.MenuBar() helpMenu = wx.Menu() helpMenu.Append(ID_ABOUT, "&About", "About this program") fileMenu = wx.Menu() fileMenu.Append(ID_OPEN, "&Open...", "Opens a File") fileMenu.Append(ID_SAVE, "&Save...", "Saves the File") fileMenu.AppendSeparator() fileMenu.Append(ID_EXIT, "E&xit", "Terminate the program") menubar.Append(fileMenu, "&File") menubar.Append(helpMenu, "&Help") self.SetMenuBar(menubar) #Code to run on each menu option wx.EVT_MENU(self, ID_ABOUT, self.OnAbout) wx.EVT_MENU(self, ID_EXIT, self.OnExit) wx.EVT_MENU(self, ID_OPEN, self.OnOpen) wx.EVT_MENU(self, ID_SAVE, self.OnSave) #Row of Buttons at the Bottom ''' self.sizer2 = wx.BoxSizer(wx.HORIZONTAL) self.buttons = [] for i in range(6): bid = i + 1 self.buttons.append(wx.Button(self, ID_BUTTON1+i, "Button &" + str(bid))) self.sizer2.Add(self.buttons[i], 1, wx.EXPAND) self.sizer = wx.BoxSizer(wx.VERTICAL) self.sizer.Add(self.control, 1, wx.EXPAND) self.sizer.Add(self.sizer2, 0, wx.EXPAND) self.SetSizer(self.sizer) self.SetAutoLayout(1) self.sizer.Fit(self) self.Show(1) ''' #Widgets to make sure things are going the way we want self.aboutme = wx.MessageDialog(self, "Fedit\nJoshua French \nDecember 2012 \nBuild 1: Made in Python 2.7, wxPython 1.9.1") self.doiexit = wx.MessageDialog(self, "Exit\nAre You Sure?\n", "Thank You!", wx.YES_NO) # dirname is an APPLICATION variable that we're choosing to store # in with the frame - it's the parent directory for any file we # choose to edit in this frame self.dirname = '' def OnAbout(self, e): self.aboutme.ShowModal() def OnExit(self, e): igot = self.doiexit.ShowModal() if igot == wx.ID_YES: self.Close(True) def OnOpen(self, e): dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*",wx.OPEN) if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() filehandle = open(os.path.join(self.dirname, self.filename), 'r') self.control.SetValue(filehandle.read()) filehandle.close() self.SetTitle("Editing... "+self.filename) dlg.Destroy() def OnSave(self, e): dlg = wx.FileDialog(self, "Choose a File", self.dirname, "", "*.*", wx.SAVE | wx.OVERWRITE_PROMPT) if dlg.ShowModal == wx.ID_OK: itcontains = self.control.GetValue() self.filename = dlg.GetFileName() self.dirname = dlg.GetDirectory() filehandle = open(os.path.join(self.dirname, self.filename), 'w') filehandle.write(itcontains) filehandle.close() dlg.Destroy() #Exiting the program on exit def exitProgram(self, event): self.Close(True)#Closes the Program def closeWindow(self, event): self.Destroy()#Destroys the window if __name__ == "__main__": app = wx.PySimpleApp() frame = MainWindow(None, "FEdit") frame.Show() app.MainLoop()