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
, который сделан для такого рода вещей.