我正在尝试使用另一种方法将位图添加到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中。
有没有一种方法可以简单地将多个图像添加到面板中,但避免静态位图?这种加载效应会在执行过程中造成很大的延迟,因此静态bmps不是一种选择。
我也研究过wx.grid.Grid,但这似乎使事情变得更加复杂。
谢谢!
发布于 2018-10-24 17:09:58
我们在这里谈论的是多少张图片?保存这些图像的文件有多大?如果你有很多很大的图像,你几乎无能为力,因为系统需要时间来加载位图并将它们排列在网格中。
你看过wx.lib.agw中的ThumbnailCtrl吗?它可能会给你一些关于如何加速加载和显示图像的指针。
最后,如果你有很多(非常多)的图像,不要使用wx.StaticBitmap:特别是在Windows上,操作系统很容易耗尽GDI对象并使你的系统崩溃。
安德里亚。
https://stackoverflow.com/questions/52950574
复制相似问题