Python не записывает данные в txt файл

Python записывает в txt файл только запятую, игнорируя слова

def StartEnglishForm():

    words = Tk()
    words.title("Словарь")

    width = 800
    height =800
    screen_width = words.winfo_screenwidth()
    screen_height = words.winfo_screenheight()
    x = (screen_width/2) - (width/2)
    y = (screen_height/2) - (height/2)
    words.geometry("%dx%d+%d+%d" % (width, height, x, y))
    words.resizable(0, 0)

    RUS_WORD = StringVar()
    ENG_WORD = StringVar()      

    def EnglishForm():
        global EnglishFrame, lbl_result_, btn_word
        EnglishFrame = Frame(words)
        EnglishFrame.pack(side=TOP, pady=80)
        lbl_rus = Label(EnglishFrame, text="Сюда запиши русское слово:", font=('times new roman', 20), bd=35)
        lbl_rus.grid(row=1)
        lbl_eng = Label(EnglishFrame, text="А сюда его перевод:", font=('times new roman', 20), bd=35)
        lbl_eng.grid(row=2)
        lbl_result_ = Label(EnglishFrame, text="", font=('times new roman', 18))
        lbl_result_.grid(row=3, columnspan=2)
        rus_word = Entry(EnglishFrame, font=('arial', 20), textvariable=RUS_WORD, width=15)
        rus_word.grid(row=1, column=1)
        eng_word = Entry(EnglishFrame, font=('arial', 20), textvariable=ENG_WORD, width=15)
        eng_word.grid(row=2, column=1)
        btn_word = Button(EnglishFrame, text="Сохранить в словарь",  bg = 'brown', fg = 'white', font=('times new roman', 20, 'bold'), width=35, command = Words)
        btn_word.grid(row=4, columnspan=2, pady=20)

    def Words():
        file = open("english.txt", "a")
        file.write(str(RUS_WORD.get()) + ",") #в txt записывается только запятая
        file.write(str(ENG_WORD.get()) + "\n")
        lbl_result_.config(text="Слова добавлены в словарь!", fg="black")
        file.close()

    EnglishForm()

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

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

Попробовал собрать у себя кусок твоего кода и покрутить его и так и сяк. У меня все просто работает... Из вариантов, стоит попробовать сделать:

Попробуй добавить вот так:

def Words():
    global RUS_WORD # вот такое
    global ENG_WORD # и вот такое
    file = open("english.txt", "a")
    print("Вот это мое слово: " + str(RUS_WORD.get())) # и вообще, надо посмотреть, есть ли у тебя там хоть что то. Возможно у тебя переменная пустая.
    

А так же добавь еще глобалы в везде где у тебя есть RUS_WORD:

 def EnglishForm():
    global RUS_WORD # вот такое
    global ENG_WORD # и вот такое

Тот код, что у меня сейчас работает, для примера:

from tkinter import ttk
from tkinter import *

global rus_word


def english_form():
    global rus_word
    root = Tk()
    rus_word = StringVar()
    rus_word.set("Привет")
    files_renamer = ttk.Button(text="set_word", command=set_word)
    files_renamer.grid(row=0, column=1, sticky=E + W + N, pady=10, padx=10)
    rus_word = Entry(font=('arial', 20), textvariable=rus_word, width=15)
    rus_word.grid(row=1, column=1)
    root.mainloop()


def set_word():
    global rus_word
    file = open("english.txt", "a") # файл english.txt лежит в папке проекта pycharm
    print("Hello," + str(rus_word.get()))
    file.write("Hello," + str(rus_word.get()))
    file.close()


if __name__ == '__main__':
    english_form()
→ Ссылка