wxPython Добавить много изображений в wx.ScrolledWindow

Я пытаюсь добавить около 1500 растровых изображений в ScrolledWindow внутри GridSizer. Они загружены успешно (но немного медленно).

Моя проблема: всякий раз, когда я прокручиваю немного быстрее, все это останавливается на 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 ответ

Решение

Есть несколько вариантов. Вы можете загрузить количество изображений, которые вы можете видеть на экране, а затем загрузить больше, когда пользователь прокручивает. Это, вероятно, будет работать довольно хорошо. Если вы не хотите, чтобы пользователь видел их загрузку, загрузите две страницы и просто загрузите событие прокрутки.

Другой вариант - создать миниатюры изображений в папке и показать их. Это должно загрузить значительно быстрее и может решить проблему замораживания.

Другой вариант, который приходит на ум, это использовать другой виджет, например wx.lib.imagebrowser, который сделан для такого рода вещей.

Другие вопросы по тегам