Quel est le meilleur choix pour une application GUI Python pour afficher un grand nombre de vignettes, par ex. 10000 ou plus? Pour des raisons de performances, ce contrôle de vignettes doit prendre en charge les éléments virtuels, c'est-à-dire demander l'application pour ces vignettes uniquement qui sont actuellement visibles par l'utilisateur.Contrôle d'image miniature efficace pour Python?
Répondre
Si vous deviez écrire votre propre document, j'ai eu de bons résultats en utilisant la bibliothèque d'imagerie Python pour créer des miniatures dans le passé. http://www.pythonware.com/products/pil/
En wxPython vous pouvez utiliser wxGrid pour cela comme il prend en charge le mode virtuel et équarrisseurs cellule personnalisée.
This est l'interface minimale que vous devez mettre en œuvre un "fournisseur de données" 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
This est l'interface minimale que vous devez mettre en œuvre pour une CellRenderer wxGrid:
class CellRenderer(wx.grid.PyGridCellRenderer):
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
pass
Vous pouvez trouver un exemple de travail qui utilise ces classes dans wxPython docs and demos, il s'appelle Grid_MegaExample.
Juste pour être complet: il y a un thumbnailCtrl écrit dans/pour wxPython, ce qui pourrait être un bon point de départ.
Si vous êtes satisfait de PIL, consultez [Pillow] (https://python-pillow.org/) – guival