wxPython Добавить много изображений в wx.ScrolledWindow - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь добавить около 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 Ответ

0 голосов
/ 18 октября 2018

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

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

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

...