Найти - Пользователи
Полная версия: Динамическое создание кнопок
Начало » Python для новичков » Динамическое создание кнопок
1
m1r42
Всех с наступающим Новым Годом!
Столкнулся с проблемой, которую ни как не могу решить. Необходимо динамически создать несколько кнопок с разными командами.
Вроде бы логика подсказывает как это сделать, но не работает.
Написал код для примера. Каждая кнопка должна выполнять свою команду, но не тут то было.
 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
Все решил вопрос. Вопрос закрыт.

  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)]))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB