Python tkinter продолжал говорить, что моя переменная для хранения значения .get() не определена

Я изучаю, как использовать .get() для tkinter, и пытаюсь написать этот базовый графический интерфейс, который может хранить, обрабатывать и отображать данные в зависимости от пользовательского ввода.

Теперь (я новичок в этом, поэтому я, вероятно, ошибаюсь), насколько мне известно, мне нужно использовать .get() и сохранить его в переменной для будущего использования.

Теперь вот мои коды, но когда я запускаю код, он продолжает говорить, что я не определил свою переменную в функции, которую я определил.

Я написал в Pycharm, переменная, которую я написал в первой строке функции, просто стала серой.

Почему это происходит, я пропустил что-то важное?

Примечание:

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

  1. Строковая переменная()
  2. 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()

Вывод перед:

Вывод после:

Другие вопросы по тегам