Python tkinter продолжал говорить, что моя переменная для хранения значения .get() не определена
Я изучаю, как использовать .get() для tkinter, и пытаюсь написать этот базовый графический интерфейс, который может хранить, обрабатывать и отображать данные в зависимости от пользовательского ввода.
Теперь (я новичок в этом, поэтому я, вероятно, ошибаюсь), насколько мне известно, мне нужно использовать .get() и сохранить его в переменной для будущего использования.
Теперь вот мои коды, но когда я запускаю код, он продолжает говорить, что я не определил свою переменную в функции, которую я определил.
Я написал в Pycharm, переменная, которую я написал в первой строке функции, просто стала серой.
Почему это происходит, я пропустил что-то важное?
Примечание:
Я провел некоторое исследование и увидел некоторые результаты в отношении использования следующего метода:
- Строковая переменная()
- fstring, f"{}"
но я до сих пор не могу понять, как это работает и как это влияет на мой код, что Python не принимает мою переменную.
Import tkinter as tk
def event():
expEntry = entry.get()
window = tk.Tk()
entry = tk.Entry(window)
button = tk.Button(window,commnad=event())
expEntry = tk.Label(window,text = expEntry)
entry.pack()
button.pack()
expEntry.pack()
window.mainloop()
2 ответа
Вы должны использоватьStringVar
чтобы сохранить значение записи, когдаevent()
называется
import tkinter as tk
def event(): # use this function to update the StringVar
entry_content = entry.get()
entry_var.set(entry_content)
window = tk.Tk()
# declare a StringVar to store the value of your Entry and update your Label
entry_var = tk.StringVar(window, 'Default Text')
# use 'textvariable' here to update the label when the bound variable changes
expEntry = tk.Label(window, textvariable=entry_var)
entry = tk.Entry(window)
# there was a typo in 'command' here, FIY
button = tk.Button(window, text='Press me', command=event)
entry.pack()
button.pack()
expEntry.pack()
window.mainloop()
Примечание: вам не нужно()
для привязки команды, так как вы не вызываетеevent
функция там! Ты просто рассказываешьbutton
имя функции, которую он должен вызывать.
Более простой способ сделать это. Только что добавленtk.StringVar()
.
import tkinter as tk
window = tk.Tk()
window.geometry("700x300")
window.title("StringVar Object in Entry Widget")
var =tk.StringVar(window)
def event():
Label2.config(text=var.get())
myEntry = tk.Entry(window, textvariable=var)
myEntry.pack()
myButton = tk.Button(window, text="Submit", command=event)
myButton.pack()
Label2 = tk.Label(window, font="Calibri,10")
Label2.pack()
window.mainloop()
Вывод перед:
Вывод после: