@VuztreeCalan
Дилетант Широкого Профиля

Как в цикле создать кнопки с отличающимся аргументом command (Tkinter Python3)?

Есть код, перебирает файлы в папке, кладёт .jpg в список images, и папки(Сделал костылём, так как не знаю как сделать правильное условие), в список dirs.
Дальше цикл, который создаёт столько кнопок, сколько было обнаружено папок, но задача в том, чтобы кнопка отсылала файл в ту папку, индекс которой был указан во время итерации for, и сделать это у меня не вышло, в коде думаю будет понятнее что я хотел сделать, вот он:

import os
import shutil
from tkinter import *

root = Tk()
root.title("Sort Images")
root.geometry("1920x1080")

def copyImageToDir (dirIndex):
    shutil.copy(images[0], dirs[dirIndex])

dirs = []
images = []
for file in os.listdir():
    if (file.endswith(".jpg")):
        images.append(file)
    elif not (file.endswith(".py")):
        dirs.append(file)


xCord = .4
for dirIndex, dirName in enumerate(dirs):
    buttonName = Button(text="Поместить в папку: " + dirName, cursor="cross", command=lambda: copyImageToDir(dirIndex))
    buttonName.place(relx=xCord, rely=.80, anchor="center")
    xCord += .1

root.mainloop()
  • Вопрос задан
  • 1507 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Использовать замыкание
...command=lambda dirIndex=dirIndex: copyImageToDir(dirIndex))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы