Вы можете также вызвать функцию .get () в виджете «Ввод», чтобы получить текст.
import tkinter
from tkinter import Tk, Button, Entry
mw = Tk()
entry = Entry(mw)
entry.pack()
def but():
text = entry.get()
print(text)
button.config(text='Button Clicked')
button = Button(mw, command=but, text='Test')
button.pack()
mw.mainloop()
Этот код работает, но усложняется при увеличении кода. Вам нужно определить функцию перед созданием виджета, который вызывает эту функцию. В приведенном выше примере, если вы создали виджет кнопки перед функцией, вы получите исключение. Вы можете создать виджет, затем создать функцию, а затем изменить конфигурацию кнопки, чтобы вызывать эту функцию при нажатии, но это все еще довольно сложно и может привести к путанице в больших программах.
Я бы порекомендовал поместить все в класс. Это позволяет легко ссылаться на виджеты в функциях.
import tkinter
from tkinter import Tk, Button, Entry
class Main:
def __init__(self, master):
self.master = master
self.entry = Entry(self.master)
self.entry.pack()
self.button = Button(self.master, text='Test', command=self.But)
self.button.pack()
def But(self):
print(self.entry.get())
self.button.config(text='Button Clicked.')
mw = Tk()
main = Main(mw)
mw.mainloop()