Функция ввода не работает для простой программы
Мне трудно понять, почему этот очень простой кусок кода не работает. В основном это должно печатать все, что вы печатаете. Он работает без ошибок, но когда я набираю что-то в виджете ввода и нажимаю кнопку отправки, он ничего не печатает. Я использую Python 3.xx.
from tkinter import *
window = Tk()
def GET():
typed = e.get()
print(typed)
e = Entry(window)
e.pack()
b = Button(window, text = "Submit", command = GET())
b.pack()
window.mainloop()
2 ответа
Что вам нужно сделать, это установить команду GET
вместо GET()
, Все, что вам нужно сделать, это передать ссылку, а не полный вызов функции, потому что тогда она возвращает возвращаемое значение:
from tkinter import *
window = Tk()
def GET():
typed = e.get()
print(typed)
e = Entry(window)
e.pack()
b = Button(window, text = "Submit", command = GET) # GET not GET()
b.pack()
window.mainloop()
Теперь он выполнит GET соответственно. Обратному вызову нужна только ссылка на функцию, а не вызов функции, которая получит возвращаемое значение. В данном случае это None, и кнопка ничего не делает.
b = Button(window, text = "Submit", command = GET())
Обратите внимание, что, делая command=GET()
вы вызываете функцию GET
а затем передать его возвращаемое значение (None
в этом случае) к command
аргумент.
Вместо этого вы должны делать command=GET
, Это пройдет функцию GET
к command
аргумент, а не его возвращаемое значение.