Programación Web y Scripting > Python

 Darle Un Valor A Un Textctrl Con Wxpython

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa