2014-01-22 2 views
1

У меня есть папка, содержащая несколько файлов .jpg (каждый из них 100x100 пикселей).Создайте загрузку изображений кнопок из .jpg файлов

Я хотел бы создать панель wxPython, отображающую все эти .jpg (с мозаичным расположением), как wx.BitmapButton.

Я попробовал демонстрацию wxPython под названием BitmapButton.py, но это загружает изображения только из встроенного изображения, здесь я не знаю, каков канонический способ сделать это с помощью JPEG.

Более того, я бы хотел, чтобы эта панель автоматически выдавала good расположение кнопок.

Пример: предположим, у меня есть 10 кнопок.

  • Если ширина окна является достаточно большой, чтобы соответствовать 5 кнопок в ряд, должен быть отображен 2 ряд 5 кнопок,
  • Если окно изменяются в меньшей ширины, затем 2 ряда из 4 кнопки + 1 строка 2 кнопки должны быть отображены и т.д.

Как бороться с JPEGs вwx.BitmapButton, и если много кнопок, как сделать ТНА t у них автоматически хорошая компоновка на панели (автоматическое выравнивание по строкам)?

enter image description here

+0

Все моего опыта WxPython говорит мне, что перестановка кнопки на основе размера будут массивной болью – wnnmaw

+0

Спасибо за ваш ответ @wnnmaw. Мой вопрос действительно был: есть ли виджет 'BoxSizer' (или какое-либо другое имя), который мог бы обрабатывать * автоматическое * -применение кнопок в панели? – Basj

ответ

2

Да, есть новый классификатор, который может делать то, что вы хотите в WxPython 2.9+ называется WrapSizer. Пример его использования в демонстрации wxPython. Вы также можете прочитать об этом в следующем:

Что касается BitmapButton, я уверен, что вы можете передать его JPG файл, если вы делаете это правильно. Вы, вероятно, нужно сделать что-то вроде этого:

img = wx.Image(filepath, wx.BITMAP_TYPE_ANY) 
bmp = wx.BitmapFromImage(img) 
b = wx.BitmapButton(self, -1, bmp, (20, 20), 
        (bmp.GetWidth()+10, bmp.GetHeight()+10)) 
+0

Отлично! Я не ожидал, что это будет так просто ... Две маленькие мелочи: какой простой способ добавить тень к растровым изображениям (например, искусство абляра здесь: http://static.pcinpact.com/images/bd/news/119801 .jpeg) и как добавить текст под изображением *, который тоже будет частью кнопки (т.е. кликабельным) *? – Basj

+0

Я не знаю про тень ... вам, возможно, придется добавить это к самому изображению. Или, возможно, создайте теневое изображение и объедините его с растровым изображением, прежде чем применять его к кнопке. Что касается добавления текста, BitmapButton, похоже, не поддерживает это. Возможно, вы сможете получить это для работы с GenBitmapButton. –

+0

Спасибо @MikeDriscoll. Когда кнопки не вписываются в текущее окно, последние кнопки будут уменьшены до меньшего размера (чего я не хочу, я бы предпочел, чтобы затем была добавлена ​​полоса прокрутки): http://pastebin.com/Jq5Sp296 У вас есть есть идея по этому поводу? – Basj

Смежные вопросы