leon1000
@leon1000
Начинающий програмист на Python

Некорректно работает блокнот (который я сам написал). Что изменить в программе?

Я писал блокнот для своего портфолио. Но у меня он работает некорректно. Я открываю файл. Сохраняю. и при повторном открытии дублируется текст.
Вот пример:
1 Открываем файл.
619feae891795600692129.png
2 Редактируем файл.
619feb1c0d0e0756301237.png
3 Сохраняем и открываем.
619feb9f0fcdd601641935.png
Вот сам код:
from tkinter import *
from tkinter import Menu
from tkinter import scrolledtext
from tkinter.filedialog import *
from tkinter import messagebox

def new_file():
    sa = asksaveasfilename()
    content = txt.get(1.0,END)
    f = open(sa + ".txt", "w", encoding='utf-8')
    f.write(content)
    txt.delete(1.0, END)
    f = open(sa, 'r')
    txt.insert(INSERT, str(f.read()))
    root.title(str(sa))

def save_file_kak():
    sa = asksaveasfilename()
    content = txt.get(1.0,END)
    f = open(sa + ".txt", "w", encoding='utf-8')
    f.write(content)
	
def open_file():
        res = messagebox.askokcancel('Открыть файл', 'Все не сохраненные данные не сохранятся!                              Открыть новый файл?')
        if res == True:
            global f
            global openfile
            openfile = askopenfilename(parent=root)
            txt.delete(1.0, END)
            f = open(openfile, 'r+', encoding='utf-8')
            s = f.read()
            txt.insert(1.0, s)
            root.title(str(openfile))

def save_file():
    f.write(txt.get("1.0", 'end'))



titl = 'Новый текстовый документ.txt'
root = Tk()
root.title(titl)
root.geometry('700x500')


txt = scrolledtext.ScrolledText(root,width=800,height=800)
txt.pack()

menu = Menu(root)
filemenu = Menu(menu, tearoff=0)
filemenu.add_command(label='Новый Файл')
filemenu.add_command(label='Открыть файл', command=open_file)
filemenu.add_command(label='Сохранить', command=save_file)
filemenu.add_command(label='Сохранить как', command=save_file_kak)
menu.add_cascade(label='Файл',menu=filemenu)

root.config(menu=menu)
root.mainloop()
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Внимательнее присмотритесь в каком режиме открывается файл. w, r+, вот это все.
Ответ написан
Комментировать
yakovlev_13
@yakovlev_13
Шаманство, экзорцизм и некромантия.
Блокнот знает что вы Леонид и с Константином не согласен)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы