Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/01/2009, 18:54
iozk
 
Fecha de Ingreso: mayo-2008
Mensajes: 499
Antigüedad: 16 años, 7 meses
Puntos: 1
como hacer guardar al programa

me sale error en pickle no se porque pero no guarda

Código python:
Ver original
  1. import wx
  2. import os
  3.  
  4. class text(wx.Frame):
  5.     def __init__(self, parent, id, title):
  6.         wx.Frame.__init__(self, parent, id, title, size = (600, 550))
  7.  
  8. #barra de menu
  9.         menubar = wx.MenuBar()
  10. #menu: contenido
  11.         menu = wx.Menu() #archivo
  12.         nuev = wx.Menu()
  13.         nuev.Append(100, "&Nuevo\tCtrl+N", 'Nuevo archivo')
  14.         nuev.Append(200, "Nueva &Ventana\tCtrl+O", 'Nueva ventana para otro archivo')
  15.         menu.AppendMenu(-1, "Nuevo", nuev)
  16.         menu.Append(2, "&Abrir\tCtrl+A", "Abrir Archivo existente")
  17.         menu.Append(3, "&Guardar\tCtrl+G", "Guardar archivo")
  18.         menu.Append(4, "Guardar &Como\tCtrl+M", "guardar copia de archivo")
  19.         menu.AppendSeparator()
  20.         menu.Append(5, "&Salir\tCtrl+Q", "Salir del programa")
  21.         edit = wx.Menu()
  22.         edit.Append(10, "&Deshacer\tCtrl+Z", 'deshacer ultimo')
  23.         edit.Append(11, "&Rehacer\tCtrl+U", 'hacer denuevo')
  24.         edit.AppendSeparator()
  25.         edit.Append(12, "&Seleccionar Todo\tCtrl+E", 'seleccionar todo el texto')
  26.         edit.AppendSeparator()
  27.         edit.Append(13, "&Cortar\tCtrl+X", 'cortar texto seleccionado')
  28.         edit.Append(14, "&Pegar\tCtrl+V", 'pegar texto')
  29.         edit.Append(15, "Cop&iar\tCtrl+C", 'Copiar texto seleccionado')
  30.         help = wx.Menu()
  31.         help.Append(20, "&Acerca de...", 'Sobre este programa')
  32.         menubar.Append(menu, "&Archivo")
  33.         menubar.Append(edit, "&Edicion")
  34.         menubar.Append(help, "A&yuda")
  35.         self.SetMenuBar(menubar)
  36.        
  37. #texto enrikecido
  38.         self.text = wx.TextCtrl(self, -1, style = wx.TE_MULTILINE | wx.TE_RICH2)
  39.         self.text.SetInsertionPoint(0)
  40.         points = self.text.GetFont().GetPointSize()
  41.         f = wx.Font(points + 2, wx.MODERN, wx.NORMAL, wx.BOLD, False)
  42.         self.text.SetStyle(13, 12, wx.TextAttr("white", wx.NullColour, f))
  43.         self.text.SetBackgroundColour('Black')
  44.  
  45. #eventos
  46.         self.Bind(wx.EVT_MENU, self.OnSalir, id=5)
  47.         self.Bind(wx.EVT_MENU, self.OnVentan, id=200)
  48.         self.Bind(wx.EVT_MENU, self.OnOpen, id=2)
  49.         self.Bind(wx.EVT_MENU, self.OnSave, id=3)
  50.         self.Bind(wx.EVT_MENU, self.OnSaveAs, id=4)
  51.        
  52. #mostrar
  53.         self.filename = ""
  54.         self.CreateStatusBar()
  55.         self.Centre()
  56.         self.createToolBar()
  57.         self.Show(True)
  58.  
  59.     def SaveFile(self):
  60.         if self.filename:
  61.             data = self.text.GetValue()
  62.             f = open(self.filename, 'w')
  63.             Pickle.dump(data, f)
  64.             f.close()
  65.  
  66.     def ReadFile(self):
  67.         if self.filename:
  68.             try:
  69.                 f = open(self.filename, 'r')
  70.                 data = Pickle.load(f)
  71.                 f.close()
  72.                 self.textSetLinesData(data)
  73.             except Pickle.UnpicklerError:
  74.                 wx.MessageBox("%s no es un archivo compatible." % self.filename, "oops!", style=wx.OK|wx.ICON_EXCLAMATION)
  75.  
  76.     wildcard = "Archivos Hipertext (*.txt)|*.txt|Todos los archivos (*.*)| *.*"
  77.  
  78.     def OnOpen(self, event):
  79.         dlg = wx.FileDialog(self, "Abrir archivos de HiperTexto",  os.getcwd(), style=wx.OPEN, wildcard=self.wildcard)
  80.         if dlg.ShowModal() == wx.ID_OK:
  81.             self.filename = dlg.GetPath()
  82.             self.ReadFile()
  83.             self.SetTitle(self.title +' -- '+ self.filename)
  84.         dlg.Destroy()
  85.  
  86.     def OnSave(self, event):
  87.         if not self.filename:
  88.             self.OnSaveAs(event)
  89.         else:
  90.             self.SaveFile()
  91.  
  92.     def OnSaveAs(self, event):
  93.         dlg = wx.FileDialog(self, "Guardar archivo como...", os.getcwd(), style=wx.SAVE|wx.OVERWRITE_PROMPT, wildcard = self.wildcard)
  94.         if dlg.ShowModal() == wx.ID_OK:
  95.             filename = dlg.GetPath()
  96.             if not os.path.splitext(filename)[1]:
  97.                 filename = filename +'.txt'
  98.             self.filename = filename
  99.             self.SaveFile()
  100.             self.SetTitle(self.title +'--'+ self.filename)
  101.         dlg.Destroy()
  102.        
  103.     def OnSalir(self, event):
  104.         self.Close()
  105.  
  106.     def OnVentan(self, event):
  107.         editor = text(None, -1, 'Text Editor')
  108.         editor.Centre()
  109.         editor.Show()
  110.  
  111.     def createToolBar(self):
  112.         toolbar = self.CreateToolBar()
  113.         toolbar.AddSimpleTool(200, wx.Bitmap('icns/Nuevo.png'), 'Nuevo', '')
  114.         toolbar.AddSimpleTool(2, wx.Bitmap('icns/abrir.png'), 'Abrir', '')
  115.         toolbar.AddSimpleTool(3, wx.Bitmap('icns/Guardar.png'), 'Guardar', '')
  116.         toolbar.AddSeparator()
  117.  
  118.         toolbar.AddSimpleTool(33, wx.Bitmap('icns/cortar.png'), 'Cortar', '')
  119.         toolbar.AddSimpleTool(34, wx.Bitmap('icns/copiar.png'), 'copiar', '')
  120.         toolbar.AddSimpleTool(35, wx.Bitmap('icns/pegar.png'), 'Pegar', '')
  121.         toolbar.AddSeparator()
  122.  
  123.         toolbar.AddSimpleTool(36, wx.Bitmap('icns/des.png'), 'Deshacer', '')
  124.         toolbar.AddSimpleTool(37, wx.Bitmap('icns/rea.png'), 'Rehacer', '')
  125.         toolbar.Realize()
  126.  
  127.         ##Eventos de herramientas
  128.  
  129.  
  130. app = wx.App()
  131. text(None, -1, 'Hipertext Editor')
  132. app.MainLoop()