Python, tkinter, значение виджета Entry не передаётся в функцию

Подсобите, пожалуйста, не могу передать в функцию значения виджетов Entry в Python. Попробовал сперва на кнопке указать передачу значений, взятых из виджетов: button1 = tkinter.Button(frame1, text='Добавить', command=AddWord(eng = entry1_1.get(), rus = entry1_2.get())), а сама функция начиналась с def AddWord(eng, rus):. Это не сработало. Затем попробовал вынести функцию в отдельный файл, а затем импортировать её и использовать в основном приложении - тоже не сработало. В общем вот текст основного приложения:

import tkinter
from myfunc import AddWord

window = tkinter.Tk()
eng = tkinter.StringVar()
rus = tkinter.StringVar()

frame1 = tkinter.Frame(window, bd=5, relief=tkinter.RIDGE)      #Первый фрейм с функциями пополнения словаря
frame1.grid(row=0, column=0, columnspan=4)
label1 = tkinter.Label(frame1, text='Добавление слова в словарь')
label1.grid(row=0, column=0, columnspan=2)
label1_1 = tkinter.Label(frame1, text='Английское слово: ')
label1_1.grid(row=1, column=0)
entry1_1 = tkinter.Entry(frame1, textvariable=eng)
entry1_1.grid(row=1, column=1)
label1_2 = tkinter.Label(frame1, text='Русское слово: ')
label1_2.grid(row=2, column=0)
entry1_2 = tkinter.Entry(frame1, textvariable=rus)
entry1_2.grid(row=2, column=1)
button1 = tkinter.Button(frame1, text='Добавить', command=AddWord(eng=entry1_1.get(), rus=entry1_2.get()))   #ДОБАВЬ КОМАНДУ!
button1.grid(row=3, column=1, padx=5, pady=5)

frame2 = tkinter.Frame(window, bd=5, relief=tkinter.RIDGE)      #Второй фрейм с функцией угадывания слова
frame2.grid(row=3, column=0, columnspan=4)
label2 = tkinter.Label(frame2, text='Переведите слово на английский:')
label2.grid(row=0, column=0, columnspan=2)
label2_1 = tkinter.Label(frame2, text='<пусто>')    #Рандомно берётся из словаря
label2_1.grid(row=1, column=0)
entry2 = tkinter.Entry(frame2)
entry2.grid(row=1, column=1)
button2_1 = tkinter.Button(frame2, text='Сменить слово')    #ДОБАВЬ КОМАНДУ!
button2_1.grid(row=2, column=0, padx=10, pady=10)
button2_2 = tkinter.Button(frame2, text='Ответить')     #ДОБАВЬ КОМАНДУ!
button2_2.grid(row=2, column=1, padx=10, pady=10)
label2_2 = tkinter.Label(frame2, text='Прав на ошибку осталось ...')
label2_2.grid(row=3, column=0, columnspan=2)

button3 = tkinter.Button(window, text='Выход', command=window.destroy)
button3.grid(row=5, column=3, columnspan=2, padx=25, pady=15)

window.mainloop()

А вот код импортируемой функции:

def AddWord(eng, rus):
    print('переменные: ', eng, '\n', rus)
    try:
        with open('files\\dictionary.txt', 'a') as dictionary:
            dictionary.write('\n'+eng+':'+rus)
    except:
        print('Ошибка открытия файла!')

Вопрос: почему функция НЕ получает значения из виджетов Entry (проверяю это выводом на экран)?


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