Форум сайта python.su
Требуется:
получить список jpg-файлов с картинками уменьшенными копиями каждого файла.
Получаю список (обычный питоновский) имён файлов, даже в словарь запихал соответствия картинок именам файлов.
И картинки Rescale'ем уменьшил. (правда, процесс этот небыстрый)
Как запихать данные в лист-контроль в таком виде:
ПЕРВАЯ КОЛОНКА ВТОРАЯ КОЛОНКА
трали-вали.jpg картинка-изображение
трюли-люли.jpg картинка-изображение
забодай-бодайло.jpg картинка-изображение
Перечитал все доки, залез в демо wx.Питона, залез в help(wx.ListCtrl) НИЧЕГО НЕ МОГУ ПОНЯТЬ!
Даже текстовую строчку не могу запихать в лист-контроль!
Офлайн
Ну согласен, для новичка в демке пример трудноват. Вот вам простой:
# -*- coding: cp1251 -*- import wx, os, os.path _IMAGE_DIR = './images' class TestFrame(wx.Frame): def __init__(self, parent): wx.Frame.__init__(self, parent, -1, "Test", size=(500, 400)) self.list = wx.ListCtrl(self, -1, style=wx.LC_REPORT) self.list.InsertColumn(0, u"ПЕРВАЯ КОЛОНКА") self.list.InsertColumn(1, u"ВТОРАЯ КОЛОНКА") self.il = wx.ImageList(16, 16) self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL) for filename in os.listdir(_IMAGE_DIR): item = wx.ListItem() item.SetImage(-1) index = self.list.InsertItem(item) image_index = self.il.Add(wx.Image(os.path.join(_IMAGE_DIR, filename), wx.BITMAP_TYPE_PNG).ConvertToBitmap()) self.list.SetStringItem(index, 0, filename) self.list.SetItemColumnImage(index, 1, image_index) self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE) self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE) if __name__ == '__main__': app = wx.PySimpleApp() frame = TestFrame(None) frame.Show(True) app.MainLoop()
Отредактировано (Дек. 14, 2007 11:03:52)
Офлайн
Спасибо! Бум разбираться…
П.С. Зачем в Show() запихивать True?
Он и без него неплохо срабатывает.
Отредактировано (Дек. 15, 2007 17:37:36)
Офлайн
FoxPythonда собственно незачем :) я просто кусок из какого-то примера скопировал, так он и остался.
П.С. Зачем в Show() запихивать True?
Он и без него неплохо срабатывает.
Офлайн
Пардон, ещё вопросик: а можно ли вытащить из JPG-файла его уменьшенную копию, та, что для быстрого просмотра используется? А то если файлов много, да все ещё по 2-3 мегабайта (с моего фота), то Rescale заду-у-у-у-мается не на шутку.
Двойной пардон: так и не сумел ужать картинку так, чтобы она вписалась в определённый размер (допустим 200*200) и при этом сохранила бы свои пропорции (т.е. одной стороной полностью вписалась бы в указанный размер, а второй стороной - так, чтобы не попортить собственные пропорции). Есть такой метод? Или только собственноручно высчитывать на сколько уменьшать каждую из сторон картинки?
Офлайн
Сделал свой листконтроль указанным способом. Усё получилось. Всё замечательно, за одни маленьким но досадным исключением: какого-то лешего картинка jpg-файла лепится как во вторую колонку, где ей и положено быть, так и в ПЕРВУЮ, где ей быть не положено!
Т.е. вместо:
имя файла картинка
получилось
картинка, имя файла снова картинка
Что за ерундень? Что только не делал, никак не смог выкинуть картинку из первой колонки. Добился только того, что все картинки в первой колонке стали одинаковыми.
Офлайн
Помогите! (рыдающий смайл)
Офлайн
FoxPythonНу честно скажу - не знаю. Я в примере ставил:
Помогите! (рыдающий смайл)
item.SetImage(-1)
Офлайн