wxPython将大量图像添加到wx.ScrolledWindow

时间:2018-10-18 17:14:04

标签: wxpython scrolledwindow

我正在尝试在GridSizer内向ScrolledWindow添加约1,500个位图。它们已成功加载(但速度较慢)。

我的问题是:每当我滚动更快一点,整个过程就会冻结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) 

有没有办法避免滚动后的大延迟?

谢谢!

1 个答案:

答案 0 :(得分:1)

有两种选择。您可以加载屏幕上可以看到的图像数量,然后在用户滚动时加载更多图像。这可能会很好地工作。如果您不希望用户看到正在加载的内容,则可以加载两个页面,仅在滚动事件上加载即可。

要考虑的另一个选项是在文件夹中创建图像的缩略图,然后显示它们。这样应该加载得更快,并且可以解决冻结问题。

想到的另一种选择是使用其他的小部件,例如wx.lib.imagebrowser,它是为这种事情而制作的。