Почему в Tkinter не удается вывести значение поля Entry?

  • 13 августа 2023 г. 7:55
Ответы на вопрос 4
Ошибка возникает потому, что внутри лямбда-функции вы передаете параметр entry_id, но не передаете его функции clicked_send. 

Вы можете передать его, добавив параметр в аргументы clicked_send внутри лямбда-функции:

Button(w, text="Отправить", command=lambda: clicked_send(entry_id)).pack() 

В функции clicked_send также необходимо добавить параметр entry_id:

def clicked_send(entry_id):
    entry_text = entry_id.get()
    print(entry_text) 

Таким образом, ваш исправленный код будет выглядеть следующим образом:

from tkinter import *

w = Tk()

def send_window():
    w = Tk()
    w.title("Новое окно")
    w.geometry("250x200")
    Label(w, text="Введите ID для отправки:", font=("Arial Bold", 15)).pack()
    entry_id = Entry(w)
    entry_id.pack()
    Button(w, text="Отправить", command=lambda: clicked_send(entry_id)).pack()
    return entry_id

def clicked_send(entry_id):
    entry_text = entry_id.get()
    print(entry_text)

btn = Button(w, text="Отправка по Telegram", command=send_window)
btn.pack(anchor=W, fill="x")

w.mainloop()
Button(w, text="Отправить", command= lambda: clicked_send(entry_id)).pack() 
 Здесь вы используете кнопку, которая вызывает функцию clicked_send с параметром entry_id при клике на нее.

Button(w, text="Отправить", command= partial(clicked_send, entry_id).pack() 
 Альтернативный способ - использовать кнопку, которая вызывает функцию clicked_send с параметром entry_id при клике на нее, используя функцию partial из модуля functools.
Похожие вопросы