Использование button в tkinter

Столкнулся с проблемой, что при передаче command в Button функции, она выполняется до срабатывания даже mainloop. Можно ли как то этого избежать? Пример:

def submit(entry):
    a = entry.get()
    if a == 'Enter smth':
        messagebox.showerror('Ошибка', 'Введите число')
        return
    else:
        foo(a)

entry = Entry(main)
entry.insert(0,'Enter smth')

run = Button(main,
             text=" Enter ",
             command=submit(entry)
             )

main.mainloop()

mainloop() не выполняется, при обработке command программа сразу переходит в функцию, видит, что в поле введена строка и выводит ошибку, после чего закрывает програму.


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

Автор решения: DGDays

Просто в кнопке надо заменить command = submit(entry) на command = lambda: submit(entry) и все хорошо запашет.

→ Ссылка