wxPython Добавление нескольких изображений к проблеме панели - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь добавить растровые изображения в GridSizer, отдельным методом:

def populate_grid_with_emojis(self, category):
    for i in range(len(self.emoji_categories[category])):
        emoji_string = self.emoji_categories[category][i].lower()
        if '_skin_tone' in UNICODE_EMOJI[STRING_UNICODE[emoji_string]]:
            continue
        init_emoji = wx.Image(unicode_to_filename(STRING_UNICODE[emoji_string], 32))
        emoji = EmojiBitmap(wx.Bitmap(init_emoji),
                            UNICODE_EMOJI[STRING_UNICODE[emoji_string]])

        static_bmp = wx.StaticBitmap()
        static_bmp.Create(self, -1, wx.Bitmap(init_emoji))

        self.emoji_bmps_sizer.Add(static_bmp)
        self.added_emojis[UNICODE_EMOJI[STRING_UNICODE[emoji_string]]] = emoji

Моя проблема заключается в том, что при добавлении StaticBitmap в классификатор создается эффект загрузки и быстро отображаются изображения.после другого в родительском окне.После этого они загружаются в классификатор.

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

Я также рассмотрел wx.grid.Grid, но это, кажется, еще больше усложняет ситуацию.

Спасибо!

1 Ответ

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

Сколько изображений мы говорим здесь?Насколько большие файлы содержат эти изображения?Если у вас много больших изображений, вы практически ничего не можете сделать, поскольку системе потребуется время для загрузки растровых изображений и их размещения в сетке.

Вы смотрели на ThumbnailCtrl в wx.lib.agw??Это может дать вам некоторый указатель на то, как ускорить загрузку и отображение изображений.

Наконец, если у вас много (очень много) изображений, не используйте wx.StaticBitmap: особенно в Windows, ОС можетлегко исчерпать объекты GDI и разрушить вашу систему.

Andrea.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...