我正在尝试通过单独的方法将位图添加到GridSizer中:
def populate_grid_with_emojis(self, category):
for i in range(len(self.emoji_categories[category])):
emoji_string = self.emoji_categories[category][i].lower()
if '_skin_tone' in UNICODE_EMOJI[STRING_UNICODE[emoji_string]]:
continue
init_emoji = wx.Image(unicode_to_filename(STRING_UNICODE[emoji_string], 32))
emoji = EmojiBitmap(wx.Bitmap(init_emoji),
UNICODE_EMOJI[STRING_UNICODE[emoji_string]])
static_bmp = wx.StaticBitmap()
static_bmp.Create(self, -1, wx.Bitmap(init_emoji))
self.emoji_bmps_sizer.Add(static_bmp)
self.added_emojis[UNICODE_EMOJI[STRING_UNICODE[emoji_string]]] = emoji
我的问题是,将StaticBitmap添加到sizer时,它会产生加载效果,并在父窗口中快速显示图像。之后,将它们加载到sizer中。
有没有一种方法可以简单地将多个图像添加到面板中,却可以避免静态位图?这种加载效果会在执行过程中造成很大的滞后,因此不能选择静态bmp。
我也查看了wx.grid.Grid,但这似乎使事情变得更加复杂。
谢谢!
答案 0 :(得分:0)
我们在这里谈论多少张图片?保存这些图像的文件有多大?如果您有很多大图像,那么您几乎无能为力,因为系统将需要时间来加载位图并将它们排列在网格中。
您是否看过wx.lib.agw中的ThumbnailCtrl?它可能会为您提供有关如何加快图像加载和显示速度的提示。
最后,如果您有很多(很多)图像,请不要使用wx.StaticBitmap:尤其是在Windows上,操作系统很容易耗尽GDI对象并导致系统崩溃。
安德里亚。