Форум сайта python.su
0
Требуется:
получить список jpg-файлов с картинками уменьшенными копиями каждого файла.
Получаю список (обычный питоновский) имён файлов, даже в словарь запихал соответствия картинок именам файлов.
И картинки Rescale'ем уменьшил. (правда, процесс этот небыстрый)
Как запихать данные в лист-контроль в таком виде:
ПЕРВАЯ КОЛОНКА ВТОРАЯ КОЛОНКА
трали-вали.jpg картинка-изображение
трюли-люли.jpg картинка-изображение
забодай-бодайло.jpg картинка-изображение
Перечитал все доки, залез в демо wx.Питона, залез в help(wx.ListCtrl) НИЧЕГО НЕ МОГУ ПОНЯТЬ!
Даже текстовую строчку не могу запихать в лист-контроль!
Офлайн
72
Ну согласен, для новичка в демке пример трудноват. Вот вам простой:
# -*- 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)
Офлайн
0
Спасибо! Бум разбираться…
П.С. Зачем в Show() запихивать True?
Он и без него неплохо срабатывает.
Отредактировано (Дек. 15, 2007 17:37:36)
Офлайн
72
FoxPythonда собственно незачем :) я просто кусок из какого-то примера скопировал, так он и остался.
П.С. Зачем в Show() запихивать True?
Он и без него неплохо срабатывает.
Офлайн
0
Пардон, ещё вопросик: а можно ли вытащить из JPG-файла его уменьшенную копию, та, что для быстрого просмотра используется? А то если файлов много, да все ещё по 2-3 мегабайта (с моего фота), то Rescale заду-у-у-у-мается не на шутку.
Двойной пардон: так и не сумел ужать картинку так, чтобы она вписалась в определённый размер (допустим 200*200) и при этом сохранила бы свои пропорции (т.е. одной стороной полностью вписалась бы в указанный размер, а второй стороной - так, чтобы не попортить собственные пропорции). Есть такой метод? Или только собственноручно высчитывать на сколько уменьшать каждую из сторон картинки?
Офлайн
0
Сделал свой листконтроль указанным способом. Усё получилось. Всё замечательно, за одни маленьким но досадным исключением: какого-то лешего картинка jpg-файла лепится как во вторую колонку, где ей и положено быть, так и в ПЕРВУЮ, где ей быть не положено!
Т.е. вместо:
имя файла картинка
получилось
картинка, имя файла снова картинка
Что за ерундень? Что только не делал, никак не смог выкинуть картинку из первой колонки. Добился только того, что все картинки в первой колонке стали одинаковыми.
Офлайн
0
Помогите! (рыдающий смайл)
Офлайн
72
FoxPythonНу честно скажу - не знаю. Я в примере ставил:
Помогите! (рыдающий смайл)
item.SetImage(-1)
Офлайн