wxPython将大量图像添加到wx.scrolled窗口中

wxPython将大量图像添加到wx.scrolled窗口中,wxpython,scrolledwindow,Wxpython,Scrolledwindow,我正在尝试在GridSizer中向滚动窗口添加大约1500个位图。它们已成功加载,但有点慢 我的问题是:只要我滚动快一点,整个东西就会冻结8-10秒 以下是相关代码: class EmojiDBTab(wx.ScrolledWindow): def __init__(self, parent): wx.ScrolledWindow.__init__(self, parent) self.SetScrollbars(1, 10, 1, 10)

我正在尝试在GridSizer中向滚动窗口添加大约1500个位图。它们已成功加载,但有点慢

我的问题是:只要我滚动快一点,整个东西就会冻结8-10秒

以下是相关代码:

class EmojiDBTab(wx.ScrolledWindow):
    def __init__(self, parent):
        wx.ScrolledWindow.__init__(self, parent)
        self.SetScrollbars(1, 10, 1, 10)

        dbtab_sizer = wx.GridSizer(len(TEST_UNICODE_EMOJI) / 10 + 1, 10, 0, 0)
        for unicode in TEST_UNICODE_EMOJI:
            emoji_symbol = EmojiBitmap(wx.Bitmap(unicode_to_pngfilename(unicode)),
                                   TEST_UNICODE_EMOJI[unicode])
        dbtab_sizer.Add(wx.StaticBitmap(self, -1, emoji_symbol.bitmap))

        self.SetSizer(dbtab_sizer) 
有没有办法避免滚动后的大延迟


谢谢

有两种选择。您可以加载屏幕上显示的图像数量,然后在用户滚动时加载更多图像。这可能会非常有效。如果您不想让用户看到它们正在加载,那么加载两个页面,只需加载滚动事件即可

另一个要考虑的选项是在文件夹中创建图像的缩略图,然后显示这些缩略图。这将大大加快加载速度,并可能解决冻结问题


我想到的另一个选择是使用一个不同的小部件,比如wx.lib.imagebrowser,它是为这类事情而设计的。

谢谢。缩略图非常快,但是如何使用ImagePanel?它是否与普通面板一样,但针对位图进行了优化?理想情况下,我希望能够轻松地将文件中的图像加载到其中。查看文档中的类层次结构,您似乎会像使用常规面板一样使用ImagePanel。我需要查看来源以确定,谢谢你的回答!你所建议的一切对我来说都很好,但我的问题是静态位图的大小。我打开了一个新线程: