Pregunta

Si entro caracteres Báltico en textctrl y haga clic en el botón test1 Tengo un error

"InicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: 
                     ordinal not in range(128)"

El botón test2 funciona bien.

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, (-1, -1), wx.Size(450, 300))

        self.panel = wx.Panel(self)

        self.input_area = wx.TextCtrl(self.panel, -1, '',(5,5),(200,200), style=wx.TE_MULTILINE)
        self.output_list = wx.ListCtrl(self.panel, -1, (210,5), (200,200), style=wx.LC_REPORT)
        self.output_list.InsertColumn(0, 'column')
        self.output_list.SetColumnWidth(0, 100)


        self.btn1 = wx.Button(self.panel, -1, 'test1', (5,220))
        self.btn1.Bind(wx.EVT_BUTTON, self.OnTest1)

        self.btn2 = wx.Button(self.panel, -1, 'test2', (100,220))
        self.btn2.Bind(wx.EVT_BUTTON, self.OnTest2)

        self.Centre()

    def OnTest1(self, event):
        self.output_list.InsertStringItem(0,str(self.input_area.GetValue()).decode('utf-8'))

    def OnTest2(self, event):
        self.output_list.InsertStringItem(0,"ąčęėįš".decode('utf-8'))

class MyApp(wx.App):
     def OnInit(self):
         frame = MyFrame(None, -1, 'encoding')
         frame.Show(True)
         return True

app = MyApp(0)
app.MainLoop()

Actualización 1

Me han tratado este código en dos equipos x64 de Windows 7 Ultimate.

Ambos tienen pitón 2.7 y wxPython2.8 Win64 Unicode para el pitón 2.7

En ambas máquinas tengo el mismo error.

¿Fue útil?

Solución

Reemplazar def OnTest1 (auto, evento): self.output_list.InsertStringItem (0, str (self.input_area.GetValue ()). decodificación ( 'utf-8'))

con

def OnTest1 (self, evento):

    self.output_list.InsertStringItem(0,self.input_area.GetValue())

Otros consejos

No se puede reproducir ... Si trato con carácteres sueca "AAO" Parece que funciona, también cuando se utiliza "aceeiš" problema local?

¿Está utilizando la acumulación de Unicode wxPython? Usted no ha mencionado su plataforma y otro sistema de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top