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 TCDefine 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()