Как сделать это правильно?

Я захотел сделать кликер на Tkinter. У меня в приложении есть кнопка Save. По сути дела если на эту кнопку нажать, она должна записать сколько кликов я сделал. Но у меня вопрос не по этой кнопке. Как сделать так, чтобы программа при ее запуске сразу открыла файл посмотрела сохранял ли пользователь количество кликов или нет. Программа находила в какой строке находится число(если оно есть в файле) и втсавляла это количество кликов в переменную clicks и пользователь начинал не сначала. А если файл пустой, то программа напишет в переменную 0 кликов:

clicks = 0

И пользователь начнет кликать.

Файл формата .txt если что. Программа именно в него должна записывать все данные.


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

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

Полезная статья о работе с файлами с использованием Python

Простенький код кликера на tkinter с возможностью сохранять прогресс в текстовом файле:

import tkinter as tk

win = tk.Tk()
win.geometry("400x400")

click = 0

try: # Если файл есть, click перезаписывается значением с файла
    file = open('clicks.txt','r', encoding='utf-8')
    click = int(file.read())
    file.close()
except: # Если файла нет, он создается с значением уже существующего click(0)
    file = open('clicks.txt','w')
    file.write(str(click))
    file.close()


def saveFunc(): # Запись количества кликов в файл
    file = open('clicks.txt','w')
    file.write(str(click))
    file.close()

def clickFunc(): # Отображение счетчика кликов
    global click
    click += 1
    labelClicks["text"] = "Click: " + str(click)

buttonSave = tk.Button(win, text="Save", command=saveFunc) 
buttonClick = tk.Button(win, text="Click", command =clickFunc)

labelClicks = tk.Label(win, text=f"Click: {click}")

buttonSave.pack()
buttonClick.pack()

labelClicks.pack()

win.mainloop()

Единственное, что в файле записывается лишь число кликов, но думаю, немного изучив тему с статьи, Вы сможете изменить код под себя.

→ Ссылка