Как передавать значение в другую функцию динамический?

Мне нужно передавать текст в другую функцию, но на выходе я получаю только 'c'

import customtkinter as ctk


main_form = ctk.CTk()
main_form.geometry("800x600")
main_form.title("Main")
main_form.resizable(False, False)

tabview = ctk.CTkTabview(master=main_form)
tabview.pack(pady=20, padx=40, fill='both', expand=True)
tabview.add("main")
tabview.set("main")

scrollable_frame = ctk.CTkScrollableFrame(
    master=tabview.tab("main"), width=175, height=500)
scrollable_frame.grid(row=0, column=0)

def test_func(name):
    x = name.cget("text")
    print(x)

test = list(['a', 'b', 'c'])

for i in test:
    i = ctk.CTkButton(scrollable_frame,
                      text=f'{i}', command=lambda: test_func(i))
    i.pack(padx=10, pady=6)

main_form.mainloop()

Ответы (1 шт):

Автор решения: S. Nick

Все атрибуты можно настраивать и обновлять:

.configure(attribute=value, ...)

import customtkinter as ctk


main_form = ctk.CTk()
main_form.geometry("800x600")
main_form.title("Main")
main_form.resizable(False, False)

tabview = ctk.CTkTabview(master=main_form)
tabview.pack(pady=20, padx=40, fill='both', expand=True)
tabview.add("main")
tabview.set("main")

scrollable_frame = ctk.CTkScrollableFrame(
    master=tabview.tab("main"), width=175, height=500)
scrollable_frame.grid(row=0, column=0)


def test_func(name):
    x = name.cget("text")
    print(x)


test = list(['a', 'b', 'c'])

for i in test:
    ctk_button = ctk.CTkButton(scrollable_frame, text=f'{i}')                 # !!!
#   -------------------> vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv <---- # !!!
    ctk_button.configure(command=lambda btn=ctk_button : test_func(btn))
    ctk_button.pack(padx=10, pady=6)


main_form.mainloop()

введите сюда описание изображения

→ Ссылка