добавить событие для каждой кнопки в списке кнопок - PullRequest
0 голосов
/ 21 февраля 2020

Я делаю файловый менеджер, используя tkinter, и у меня возникают некоторые проблемы. Я составил список кнопок, и я хочу, чтобы при нажатии на каждую кнопку мне давался адрес текущего пути к кнопке. Проблема в том, что он всегда сохраняет последний путь. Могу ли я назначить каждой кнопке путь? вот код, который я написал (paths - это просто класс, который я создал. По сути, это буфер):

def make_buttons(window, folders, path, paths):  # makes a list of buttons
buttons = []
for folder in folders:
    button = tkinter.Button(window, text=folder[len(path):len(folder)])
    button.bind("<Button-1>", add_new(folder, paths))
    buttons.append(button)
return buttons

1 Ответ

1 голос
/ 21 февраля 2020

Вам необходимо указать лямбду в привязке, где вы звоните add_new, иначе привязка не будет работать при срабатывании, как вы думаете.

Вот пример использования лямбды:

import tkinter as tk


root = tk.Tk()
buttons = []


def add_new(folder, paths):
    print(folder, paths)


def make_buttons(folders, path, paths):
    for folder in folders:
        buttons.append(tk.Button(root, text=folder))
        buttons[-1].pack()
        buttons[-1].bind("<Button-1>", lambda e, f=folder: add_new(f, paths))


make_buttons(['folder1', 'folder2', 'folder3'], r'C:\Users\Desktop', [r'C:\Users\p1', r'C:\Users\p2' , r'C:\Users\p3'])
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...