Форум сайта python.su
0
Имею задумку сделать менеджер папок, начал с размещения визуальных объектов на холсте - картинка папки и картинка файла в зависимости от того, что находится в папке. Через цикл задал создание группы виджетов, но почему-то программа выводит только последний элемент. Код ниже.
from tkinter import * import os import shutil from PIL import ImageTk,Image root=Tk() root.geometry('520x520') root.title('Рабочий стол (/home/konstantin/Рабочий стол)') spisok_elem=os.listdir('/home/konstantin/Рабочий стол') canvas = Canvas(root,width=500,height=500) scr = Scrollbar(root,command=canvas.yview) canvas.configure(yscrollcommand=scr.set) canvas.grid(row=0,column=0) scr.grid(row=0,column=1) x=40;y=40 for elem in spisok_elem: if elem.count('.')==0: pilImage = Image.open("Папка.png") image = ImageTk.PhotoImage(pilImage) canvas.create_image(x,y,image=image) elif elem.count('.')!=0: pilImage = Image.open("Файл.png") image = ImageTk.PhotoImage(pilImage) canvas.create_image(x,y,image=image) x=x+40 if x>500: x=40 y=y+40 root.mainloop()
Отредактировано FishHook (Май 6, 2020 16:42:35)
Офлайн
0
Опечатка: фрагмент, начинающийся с “elif”, уехал вправо.
Офлайн
0
А вообще-то нет. Это первый “if” должен быть правее.
Офлайн
568
Konstantin1984+
fixed
Офлайн
0
Что значит fixed? Можно поконкретнее: куда и что дописать?
Офлайн
568
Konstantin1984+Это значит, что я исправил
Что значит fixed?
Это первый “if” должен быть правее.в вашем стартовом посте
Офлайн
0
А как это Вы исправили, Вы - администратор сайта? А касательно проблемы что можете сказать?
Офлайн
72
Konstantin1984+Вы без нужды дёргаете жёсткий диск, он скоро в труху сотрётся.
В чем проблема?
from tkinter import Tk, Canvas, Scrollbar import os import shutil from PIL import ImageTk, Image root = Tk() root.geometry('520x520') root.title('Рабочий стол (/home/konstantin/Рабочий стол)') spisok_elem = os.listdir('/home/konstantin/Рабочий стол') canvas = Canvas(root, width=500, height=500) scr = Scrollbar(root, command=canvas.yview) canvas.configure(yscrollcommand=scr.set) canvas.grid(row=0, column=0) scr.grid(row=0, column=1) with Image.open('Папка.png') as pilImage: fold_img = ImageTk.PhotoImage(pilImage) with Image.open('Файл.png') as pilImage: file_img = ImageTk.PhotoImage(pilImage) x = 40 y = 40 for elem in spisok_elem: if elem.count('.'): image = file_img else: image = fold_img canvas.create_image(x, y, image=image) x = x + 40 if x > 500: x = 40 y = y + 40 root.mainloop()
Офлайн
0
Спасибо, rami. Хотя вроде бы только упростил код, но стало работать.
Офлайн