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 (проверяю это выводом на экран)?