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()