Python中高效的图像缩略图控制?
在开发一个Python图形界面应用时,如果你需要显示很多缩略图,比如说一万张或更多,应该选择什么工具比较好呢?为了提高性能,这种缩略图的控件必须支持“虚拟项目”,也就是说,它只会请求那些当前用户能看到的缩略图,而不是一次性加载所有的缩略图。
3 个回答
1
为了完整性,提一下:有一个叫做 thumbnailCtrl 的东西,是为 wxPython 写的,可能是个不错的起点。
1
如果你需要自己动手写代码,我之前用Python图像库(Python Imaging Library)制作缩略图的效果很好。你可以在这里找到它:http://www.pythonware.com/products/pil/
2
在 wxPython 中,你可以使用 wxGrid 来实现这个功能,因为它支持虚拟模式和自定义单元格渲染器。
这是 你需要实现的最基本的接口,用于 wxGrid 的“数据提供者”:
class GridData(wx.grid.PyGridTableBase):
def GetColLabelValue(self, col):
pass
def GetNumberRows(self):
pass
def GetNumberCols(self):
pass
def IsEmptyCell(self, row, col):
pass
def GetValue(self, row, col):
pass
这是 你需要实现的最基本的接口,用于 wxGrid 的单元格渲染器:
class CellRenderer(wx.grid.PyGridCellRenderer):
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
pass
你可以在 wxPython 的文档和示例 中找到一个使用这些类的工作示例,叫做 Grid_MegaExample。