Вы путаете свою переменную с полем ввода: использование более подходящих имен переменных помогает. Вы также пишете file_name
в файле, который создаете с этим именем ... Неясно, действительно ли это то, что вы хотели.
Вы также упаковываетесь в той же строке, что и присвоение переменной e
- pack()
, возвращает None
По какой-то причине вы также запустили два основных цикла; не делай этого, это плохая идея.
import tkinter as tk
def save():
file_name = entry.get()
with open(file_name + '.txt', 'w') as file_object:
file_object.write(file_name) # it is unclear if writing the file_name in the newly created file is really what you want.
if __name__ == '__main__':
top = tk.Tk()
entry_field_variable = tk.StringVar()
entry = tk.Entry(top, textvariable=entry_field_variable)
entry.pack()
tk.Button(top, text="save", command=save).pack()
top.mainloop()
Я удалил вложенные функции; если вы чувствуете необходимость сделать это, возможно, вам следует использовать вместо этого класс.
Я также изменил открытие / закрытие файла на менеджер контекста, который его обрабатывает.