Форум сайта python.su
Добрый день.
Имеется массив Checkbutton, построенный на основании строк в файле.
Строки вида: “название пункта меню*название файла*название картинки*описание файла”
К каждому пункту хочу прикрепить изображение. В приведенном ниже коде, изображение появляется только у последнего пункта… Подскажите, плз., что я делаю не так?
... i=1 u=2 root.vars={} for q in app0: x0 = q.split('*')[0] #получаем названия для пунктов меню im = imgdir+q.split('*')[2] #получаем ссылки на изображения img = PhotoImage(file=im) root.var=BooleanVar() ch0 = Checkbutton(canvas0,text=x0,image=img,compound=LEFT,variable=root.var,onvalue=True,offvalue=False) ch0.grid(row=u,column=i,ipadx=40,padx=5,pady=10,sticky='nsew') ch0.grid_propagate(False) if i<4: i+=1 else: u+=1 i=1 root.var.set(False) root.vars[q] = root.var
Офлайн
Заполняйте изображениями список. И потом присваивайте нужное изображение нужному полю.
Офлайн
Большое спасибо за подсказку, но в Python я совсем новичок…
Могли бы привести пример такого заполнения? Буду очень благодарен.
Пробую сделать как показано ниже, но получаю ошибку: “TypeError: descriptor ‘append’ requires a ‘list’ object but received a ‘PhotoImage’”
[code python]
...
i=1
u=2
root.vars={}
for q in app0:
x0 = q.split('*')[0]
img = PhotoImage(file=imgdir+q.split('*')[2])
imag = list.append(img)
root.var=BooleanVar()
ch0 = Checkbutton(canvas0,text=x0,image=imag,compound=LEFT,variable=root.var,onvalue=True,offvalue=False)
ch0.grid(row=u,column=i,ipadx=40,padx=5,pady=10,sticky='nsew')
ch0.grid_propagate(False)
if i<4:
i+=1
else:
u+=1
i=1
root.var.set(False)
root.vars[q] = root.var
...
[/code]
Отредактировано Submersed (Янв. 31, 2016 15:16:53)
Офлайн
images = [] for q in app0: x0 = q.split('*')[0] img = PhotoImage(file=imgdir+q.split('*')[2]) images.append(img)
Офлайн
Идеально! Благодарю
Офлайн