Mar-27-2019, 10:23 PM
I've taken this back a step, updated to python 3 and refactored the code a bit.
The only change i needed to update to python 3 was
The only change i needed to update to python 3 was
style=wx.OPENto
style=wx.FD_OPENI've also changed
self.SetTitle('{} - Notespad'.format(filename))to use new string formating
self.SetTitle(f'{filename} - Notespad')The new code
import wx class Notespad(wx.Frame): def __init__(self, *args, **kwargs): super(Notespad, self).__init__(*args, **kwargs) self.frame_settings() self.create_menu() self.create_gui_items() self.create_sizers() def frame_settings(self): self.SetTitle('Untitled - Notespad') self.CreateStatusBar() def create_menu(self): menubar = wx.MenuBar() self.SetMenuBar(menubar) file_menu = wx.Menu() menu_open = file_menu.Append(wx.ID_OPEN, '&Open', 'Open an existing file') file_menu.AppendSeparator() menu_exit = file_menu.Append(-1, 'E&xit', 'Exit the Application') menubar.Append(file_menu, '&File') self.Bind(wx.EVT_MENU, self.on_menu_exit, menu_exit) self.Bind(wx.EVT_MENU, self.on_menu_open, menu_open) def create_gui_items(self): self.frame_panel = wx.Panel(self) self.txt_ctrl = wx.TextCtrl(self.frame_panel, style=wx.TE_MULTILINE | wx.BORDER_NONE) def create_sizers(self): sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.frame_panel, 1, wx.EXPAND) p_sizer = wx.BoxSizer(wx.VERTICAL) p_sizer.Add(self.txt_ctrl, 1, wx.EXPAND) self.frame_panel.SetSizer(p_sizer) self.SetSizer(sizer) self.Layout() def on_menu_exit(self, event): self.Close() event.Skip() def on_menu_open(self, event): wildcard = 'Text Documents (*.txt)|*.txt|Python Documents (*.py)|*.py' with wx.FileDialog(self, message='Open', wildcard=wildcard, style=wx.FD_OPEN) as dlg: if dlg.ShowModal() == wx.ID_OK: directory, filename = dlg.GetDirectory(), dlg.GetFilename() self.load_file_to_txt_ctrl(directory, filename) event.Skip() def load_file_to_txt_ctrl(self, directory, filename): self.txt_ctrl.LoadFile('/'.join((directory, filename))) self.SetTitle(f'{filename} - Notespad') if __name__ == '__main__': wx_app = wx.App(False) frame = Notespad(None) frame.Show() wx_app.MainLoop()