Programación Web y Scripting > Python
Darle Un Valor A Un Textctrl Con Wxpython
RadicalEd:
Hola chicos de SoloCodigo, pos miren que estoy tratando de agregar texto a un TextCtrl por medio de una función que abre un archivo, y me muestra un error, yo lo puse de esta forma:
--- Código: Text ---#Control que carga el archivoself.txtSaludo = wx.TextCtrl(self,-1,'',style = wx.TE_MULTILINE) #Función que abre un archivodef fichero(filename): file = open(filename, 'r') allLines = file.readlines() file.close() for eachLine in allLines: self.txtSaludo.SetValue(self, eachLine) fichero('/media/usbdisk/ficheros.py') Este es el error:
Traceback (most recent call last):
File "ventanaporpasos.py", line 59, in ?
fichero('/media/usbdisk/ficheros.py')
NameError: name 'fichero' is not defined
NRM:
seria de mucha ayuda que pongas todo el src, asi vemos la linea 59.
saludos
nrm
RadicalEd:
Hola NRM gracias por responder, ya pude hacer lo de abrir un archivo y cargarlo en el TextCtrl, lo hice utilizando la clase FileDialog, ahora el problema es que no me abre archivos UTF8, y me saca un error, este es el código:
--- Código: Text ---#! -*- coding: iso8859-1 -*-#! /usr/bin/env python#Creado por radicaled. import wximport osimport sys class MiVentana (wx.Frame): def __init__ ( self ): #Se hace la construccion del metodo __init__ para inicializar los valores del frame wx.Frame.__init__( self, None, -1, u'Open Files') self.SetBackgroundColour(wx.BLACK) self.txtSaludo = wx.TextCtrl(self,-1,'',style = wx.TE_MULTILINE) self.btnSaludo = wx.Button(self,-1,'Texto Boton') self.btnSalir = wx.Button(self,-1,'Salir') #El BoxSizer es el que contendra los controles creados (en Python 'widgets') sPal = wx.BoxSizer(wx.VERTICAL) #Se agrega el TextBox, se hace que se expanda si el frame cambia el tamaño y si se minimiza tambien se acomode sPal.Add(self.txtSaludo,1,wx.EXPAND | wx.ADJUST_MINSIZE,0) #Se agrega el Boton, se alinea al centro y si se minimiza se debe acomodar sPal.Add(self.btnSaludo,0,wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ADJUST_MINSIZE,5) sPal.Add(self.btnSalir,0,wx.ALL | wx.ALIGN_CENTER_VERTICAL | wx.ADJUST_MINSIZE,5) self.SetAutoLayout(True) self.SetSizer(sPal) self.Layout() self.Show(True) #self.btnSaludo.Bind(wx.EVT_BUTTON, self.Saludar) self.btnSaludo.Bind(wx.EVT_BUTTON, self.OnAbrir) self.btnSalir.Bind(wx.EVT_BUTTON, self.OnCloseWindow) def OnAbrir ( self, e ): """ Open a file""" dir_ventana=os.path.dirname(sys.argv[0]) if dir_ventana : os.chdir(dir_ventana) dlg = wx.FileDialog(self, u'Escoja un archivo', dir_ventana, '', '*.*', wx.OPEN) print os.getcwd() if dlg.ShowModal() == wx.ID_OK: self.filename = dlg.GetFilename() self.dirname = dlg.GetDirectory() f = open(self.dirname+'/'+self.filename,'r') self.txtSaludo.SetValue(f.read()) #wx.Frame.__init__( self, None, -1, dlg.GetFilename()) f.close() dlg.Destroy() def fichero(filename): file = open(filename, 'r') allLines = file.readlines() file.close() for eachLine in allLines: self.txtSaludo.SetValue(self, eachLine) def Saludar ( self, evento = None ): '''Manejador evento click del botón btnSaludo''' saludo = self.txtSaludo.GetValue() print saludo dlg = wx.MessageDialog(self, saludo, u'Ejemplo', wx.OK | wx.ICON_INFORMATION) #Con esto se muestra el MessageBox salida = dlg.ShowModal() def Salir ( self ): dlg = wx.MessageDialog(self, u'Realmente desea salir?', u'Advertencia', wx.OK + wx.CANCEL | wx.ICON_EXCLAMATION)#wx.ICON_INFORMATION) #Con esto se muestra el MessageBox salida = dlg.ShowModal() if salida == wx.ID_OK: self.Destroy() def OnCloseWindow(self, event): """Este evento captura cuando se quiere cerrar el editor""" #Seguro que desea salir? if not self.Salir(): return class Aplicacion(wx.App) : #Este es el método que inicializa la aplicación def OnInit ( self ): #Se crea una instancia de la ventana self.ventana = MiVentana() #Se le dice a miApp quien es la Ventana Principal self.SetTopWindow(self.ventana) return True def main(): dir_ventana=os.path.dirname(sys.argv[0]) if dir_ventana : os.chdir(dir_ventana) app = Aplicacion(0) app.MainLoop() if __name__ == "__main__": main() Este es el error:
Traceback (most recent call last):
File "ventanaporpasos.py", line 44, in OnAbrir
self.txtSaludo.SetValue(f.read())
File "/usr/lib/python2.3/site-packages/wx-2.6-gtk2-unicode/wx/_controls.py", line 1761, in SetValue
return _controls_.TextCtrl_SetValue(*args, **kwargs)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 763-766: invalid data
NRM:
tal vez estos links[1][2] te sirvan, aunque para que mi ayuda fuera mas precisa ahora necesitaria ver el archivo que no puedes abrir :P.
espero te sea util.
saludos
nrm
[1] - http://evanjones.ca/python-utf8.html
[2] - http://www.amk.ca/python/howto/unicode
RadicalEd:
--- Cita de: "NRM" --- tal vez estos links[1][2] te sirvan, aunque para que mi ayuda fuera mas precisa ahora necesitaria ver el archivo que no puedes abrir :P.
espero te sea util.
saludos
nrm
[1] - http://evanjones.ca/python-utf8.html
[2] - http://www.amk.ca/python/howto/unicode
--- Fin de la cita ---
El mismo script que ves arriba no lo puedo abrir.
Navegación
[#] Página Siguiente
Ir a la versión completa