Phoenix ThumbnailCtrl Crash

Sample ThumbnailCtrl App
The problem is apparently in the wx.lib.agw.thumbnailctrl module

···

#!/usr/bin/env python

coding:utf-8

“”"
Traceback (most recent call last):
File “C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”, line 1513, in ThreadImage
self.LoadImages(filenames[count], count)
File “C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”, line 1537, in LoadImages
img, originalsize, alpha = self._imageHandler.LoadThumbnail(newfile, (300, 240))
File “C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”, line 500, in LoadThumbnail
img.SetAlphaData(pil.convert(“RGBA”).tostring()[3::4])
AttributeError: ‘Image’ object has no attribute ‘SetAlphaData’
“”"

import os
import wx
import wx.lib.agw.thumbnailctrl as TC

Define a translation function

_ = wx.GetTranslation

class ThumbnailerFrame(wx.Frame):
def init(self, parent, id=wx.ID_ANY, title=_(u’Thumbnailer’),
pos=wx.DefaultPosition, size=wx.DefaultSize,
style=wx.DEFAULT_FRAME_STYLE
> wx.FRAME_EX_CONTEXTHELP
> wx.SUNKEN_BORDER,
name=‘Frame’):
wx.Frame.init(self, parent, id, title, pos, size, style, name)

    try:#PIL, Pillow
        self.gThumbnailCtrl = TC.ThumbnailCtrl(self,
                                              id=wx.ID_ANY,
                                              pos=wx.DefaultPosition,
                                              size=wx.DefaultSize,
                                              thumboutline=TC.THUMB_OUTLINE_FULL,
                                              thumbfilter=TC.THUMB_FILTER_IMAGES,
                                              imagehandler=TC.PILImageHandler)
    except:
        self.gThumbnailCtrl = TC.ThumbnailCtrl(self,
                                              id=wx.ID_ANY,
                                              pos=wx.DefaultPosition,
                                              size=wx.DefaultSize,
                                              thumboutline=TC.THUMB_OUTLINE_FULL,
                                              thumbfilter=TC.THUMB_FILTER_IMAGES,
                                              imagehandler=TC.NativeImageHandler)

    self.gChangeThumbDirButton = wx.Button(self, wx.ID_ANY, _(u'Change Thumbs Directory'))
    self.gChangeThumbDirButton.Bind(wx.EVT_BUTTON, self.OnChangeThumbnailDirectory)

    vsizer = wx.BoxSizer(wx.VERTICAL)
    vsizer.Add(self.gChangeThumbDirButton, 0, wx.ALL, 2)
    vsizer.Add(self.gThumbnailCtrl, 1, wx.EXPAND | wx.ALL, 2)
    self.SetSizer(vsizer)


def OnChangeThumbnailDirectory(self, event):
    print('OnChangeThumbnailDirectory')
    dialog = wx.DirDialog(self, _(u'Choose a directory with images:'),
                          defaultPath=os.getcwd(),
                          style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)

    if dialog.ShowModal() == wx.ID_OK:
        path = dialog.GetPath()
        self.gThumbnailCtrl.ShowDir(path)

    dialog.Destroy()

class ThumbnailerApp(wx.App):
def OnInit(self):
frame = ThumbnailerFrame(parent=None, id=wx.ID_ANY, title=_(u’Thumbnailer’), pos=wx.DefaultPosition, size=wx.DefaultSize)
self.SetTopWindow(frame)
frame.Show()

    return True

if name == ‘main’:
app = ThumbnailerApp(0)
app.MainLoop()

If you replace around line 500 in thumbnailctrl with this:
alpha = False
if “A” in pil.getbands():
if ‘phoenix’ in wx.PlatformInfo:
img.SetAlpha(pil.convert(“RGBA”).tostring()[3::4])
else:

img.SetAlphaData(pil.convert(“RGBA”).tostring()[3::4])
alpha = True
Then it works for me.
Werner

···

Hi,

  On 28/05/2013 16:26, Metallicow wrote:

Sample ThumbnailCtrl App

  The problem is apparently in the wx.lib.agw.thumbnailctrl module

#!/usr/bin/env python

      # coding:utf-8

      """

      Traceback (most recent call last):

        File

“C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”,
line 1513, in ThreadImage

          self.LoadImages(filenames[count], count)

        File

“C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”,
line 1537, in LoadImages

          img, originalsize, alpha =

self._imageHandler.LoadThumbnail(newfile, (300, 240))

        File

“C:\Python27\lib\site-packages\wx-2.9.5-phoenix\wx\lib\agw\thumbnailctrl.py”,
line 500, in LoadThumbnail

          img.SetAlphaData(pil.convert("RGBA").tostring()[3::4])

      AttributeError: 'Image' object has no attribute 'SetAlphaData'