Всегда пустые значения при получении данных из переменных StringVal, IntVal

Есть код интерфейса на tkinter, всё написал, добавил выпадающий список и строки ввода.

Всё ок, интерфейс работает. Пришло время выводить выпадающий список и строки ввода в переменные появились проблемы. Выпадающий список вывелся нормально, а вот текстовые поля всегда или ноль(если сделать IntVar) или пустота(если сделать StringVar). Уже всё обрыскал, всё перепробовал, так нечего не и не помогло.

Код:

import tkinter as tk
from tkinter import *
from tkinter import messagebox

OPTIONS = [
"      RF        ",
"      EU        ",
"      AE        "
] 

master = Tk()
Entry(master)
master.minsize(width=200, height=200)
variable = StringVar(master)
variable2 = StringVar(master)
message = StringVar(master)
message2 = StringVar(master)
message_entry = Entry(textvariable=message)
message_entry2 = Entry(textvariable=message2)
variable.set(OPTIONS[0])
variable2.set(OPTIONS[0])
w = OptionMenu(master, variable, *OPTIONS)
w2 = OptionMenu(master, variable2, *OPTIONS)

INE = variable.get()
OUTE = variable2.get()
INEM = message.get()
OUTEM = message2.get()


def change():
    print(INEM)


w.config(width=10, height=1)
w2.config(width=10, height=1)


Label(text="ВХОД:").grid(row=0, column=0)
Label(text="ВИХОД:").grid(row=1, column=0)
w.grid(row=0, column=1)
message_entry.grid(row=0, column=2, sticky="w")
w2.grid(row=1, column=1)
message_entry2.grid(row=1, column=2, sticky="w")

b1 = Button(text="Изменить", width=15, height=3)
b1.config(command=change)
b1.place(x=75, y=150)

mainloop()

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

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

Вы получаете данные из переменных только один раз, прямо после создания интерфейса, когда там еще ничего нет - поэтому пустые значения. Вместо этого нужно каждый раз при вызове функции change заново получать эти данные:

def change():
    INE = variable.get()
    OUTE = variable2.get()
    INEM = message.get()
    OUTEM = message2.get()
    print(INE)
    print(OUTE)
    print(INEM)
    print(OUTEM)
→ Ссылка