Mystery: wx.grid, a filter function, and Unicode

Bob Klahn bobklahn at comcast.net
Wed Jan 2 22:11:23 PST 2008


(This is the same note I sent a few minutes ago, but with a P.S. 
identifying my wxPython/Python/OS versions.)

Here's a character-filter-generating function (a minor variation 
of  a recipe in "Python Cookbook" section 1.10) that I'm using in one 
of my applications:

         def makefilter( chars, delete=True ):
             """
             Given a string of plain characters to (a) keep or (b) delete,
             build a filtering function that, applied to any string s,
             returns a copy of s containing
               (a) only the characters to be kept, or
               (b) all but the characters to be deleted.
             """
             import string
             allchars = string.maketrans('','')
             if delete: delchars = chars
             else:      delchars = allchars.translate(allchars, chars)
             def thefilter(s):
                 return s.translate(allchars, delchars)
             return thefilter

I'm using the above function inside a wx.grid cell renderer:

         class CellRenderer(gridlib.PyGridCellRenderer):
             def __init__(self):
                 gridlib.PyGridCellRenderer.__init__(self)
                 self.filter = utils.makefilter('{}\x08\x0C',delete=True)

The problem:  When the cell renderer executes and the filter is 
invoked (e.g., as self.filter(word) ), it fails on the
         return s.translate(allchars, delchars)
line in makefilter:
     TypeError: translate() takes exactly one argument (2 given)

I.e, Python thinks that string s is a Unicode string.  But I'm not 
using Unicode strings anywhere!  Any ideas where wxPython might be 
changing my plain strings into Unicode strings?  I'm not able to 
provide a simple code example.

Filters generated by makefilter work perfectly outside of my wxPython 
application.

Bob

P.S. I'm using wxPython 2.8.4.0 with Python 2.5.1 under Windows XP SP2.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.wxwidgets.org/pipermail/wxpython-users/attachments/20080103/50793f89/attachment.htm


More information about the wxpython-users mailing list