Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2022 15:00:57

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Динамическое создание кнопок

Всех с наступающим Новым Годом!
Столкнулся с проблемой, которую ни как не могу решить. Необходимо динамически создать несколько кнопок с разными командами.
Вроде бы логика подсказывает как это сделать, но не работает.
Написал код для примера. Каждая кнопка должна выполнять свою команду, но не тут то было.

 import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x500+200+100')
buttons= [1, 2, 3, 4, 5]
def press_button(show):
    print(show)
for item in buttons:
    locals()["button"+str(item)] = ttk.Button(root, text="button"+str(item),
                                        command=lambda: press_button(item))
    locals()["button"+str(item)].pack(anchor="nw")
    print(id(locals()["button"+str(item)]))
В чем может быть проблема? Чуйка подсказывает что lambda: как то не так работает как я думаю.
При нажатии на любую кнопку press_button запускается с параметром 5
До истины не могу докопаться уже второй час.
Помогите, кто чем может.

Отредактировано m1r42 (Дек. 30, 2022 15:04:40)

Офлайн

#2 Дек. 30, 2022 15:18:29

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Динамическое создание кнопок

Все решил вопрос. Вопрос закрыт.

  import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('300x500+200+100')
buttons= [1, 2, 3, 4, 5]
def press_button(show):
    print(show)
for item in buttons:
    locals()["button"+str(item)] = ttk.Button(root, text="button"+str(item),
                                        command=lambda i=item: press_button(i))
    locals()["button"+str(item)].pack(anchor="nw")
    print(id(locals()["button"+str(item)]))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version