Bonjour,
Je suis passe recemment a la derniere version de Mageia et depuis, un des logiciels que je developpe et qui fonctionnait me pose des problemes.

Precisement, je recupere des information depuis une base de donee sqlite et je veux ajouter celles-ci dans un tableau ListCtrl via un ListItem.
Toutes mes donnees sont decodees en utf8, le probleme, lorsqu'un accent est present (ou un autre caractere non ASCII), la ligne affichee est vide.

J'ai isole et reproduit le probleme dans le code ci-dessous.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
# -*- coding: utf-8 -*-
import wx
 
class MainFrame(wx.Frame):
	def __init__(self, parent) :
		wx.Frame.__init__(self, parent)
		wx.SetDefaultPyEncoding('utf8')
		self.panel = wx.Panel(self, -1)
		self.lbDocuments = wx.ListCtrl(self.panel, -1,style=wx.LC_REPORT)
		self.lbDocuments.InsertColumn(0,'Document name',width=800)
		self.docList=[]
	def add_line(self,line):
		self.docList.append(line)
	def show_content(self):
		k=0
		for row in self.docList:
			itm = wx.ListItem()
			r=row.decode('utf8')
			itm.SetText(r)
			print type(r), r , "=>",itm.GetText()
			itm.SetId(k)
			self.lbDocuments.InsertItem(itm)
			k=k+1
 
class MyApp(wx.App):
    def OnInit(self):
      self.SetAppName('TEST')
      self.frame = MainFrame(None)
      self.frame.Show(True)
      self.SetTopWindow(self.frame)
      self.frame.add_line('test 1')
      self.frame.add_line('test éé')
      self.frame.add_line('test 2')
      self.frame.show_content()
 
      return True
app = MyApp(False)
app.MainLoop()

Est-ce un bug de wxpython ou un bug de moi ?

pour info, voici les versions de mes libs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Python 2.7.9 (default, Dec 14 2014, 10:12:16) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> wx.VERSION
(3, 0, 1, 1, '')
>>> wx.GetDefaultPyEncoding()
'ISO-8859-1'
Merci d'avance!