Используя Tkinter, я пытаюсь добавить введенное пользователем значение и добавить его к значению, которое существует в файле, но не работает - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь создать очень простую программу лояльности для своего малого бизнеса.Это мой первый проект на Python или Tkinter.

В разделе #POINT ENTRY ниже пользователь может ввести соответствующее количество баллов.Затем он использует «addpoints», чтобы извлечь текущие точки из текстового файла (с расширением «.cust») и добавить введенное пользователем и записать его обратно в текстовый файл.

К сожалению, что он на самом деле делаетпросто заменяет всю эту строку на ".! Entry26"

Любое руководство будет с благодарностью.

#POINT ENTRY
pointlabel = Label(root, text="Enter Earned/Spent Points")
pointlabel.pack()
pointlabel.place(x = 46, y = 95)
pointenter = Entry(root, bg="#E9E9E9")
pointenter.config(font="bold")
pointenter.pack()
pointenter.place(x = 50, y = 120, height="30", width="140")
addbutton = Button(root, bg="green", fg="white", text="   +   ", command=addpoints)
addbutton.config(font='bold')
addbutton.pack()
addbutton.place(x = 201, y = 118)
subbutton = Button(root, bg="red", text="-")
subbutton.config(font='bold')
subbutton.pack()
subbutton.place(x = 251, y = 118)


def addpoints():
    file = open("assets\\" + IDentry.get() + ".cust", 'r+')
    currpts = file.read(0)
    updatepoints = sum(currpts, pointenter)
    file.write(str(updatepoints))
    file.close()

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Попробуйте заменить расширение .cust расширением .txt.Кроме того, вот некоторые ошибки, которые у вас есть.

Функция addpoints() должна быть перемещена над кодом tkinter.Он вызывается в разделе кода tkinter, и его необходимо определить перед вызовом.

updatepoints = sum(currpts, pointenter)

Должен стать:

updatepoints = int(currpts) + int(pointenter.get())

currpts - это строка, которую необходимо преобразовать в целое число.pointenter является объектом tkinter, и вам нужно получить строку из него, используя .get().Затем преобразуйте его в целое число.

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

Вот пример:

file = open("examplefile.txt", "r")
currpts = file.read(1)
file.close()
print(currpts)
updatepoints = int(currpts) + int(pointenter.get())
print(updatepoints)
writefile = open("test3.txt", "w")
writefile.write(str(updatepoints))
writefile.close()
0 голосов
/ 27 сентября 2018

Вот пример пробуждения:

Попробуйте:

from tkinter import *
class App:
    def __init__(self, root):
        self.pointenter = Entry(root,font=(None, 14), width=50)
        self.pointenter.pack()
        addbutton = Button(root, bg="green", fg="white", text="   +   ", command=self.addpoints)
        addbutton.config(font='bold')
        addbutton.pack()

    def addpoints(self):
        self.currpts = '50' # a string
        print(float(self.currpts)+ float(self.pointenter.get()))

if __name__=='__main__':
    root = Tk()
    app = App(root)
    root.mainloop()

Одна вещь, которую я нашел очень полезной, когда я только начинал, это сделать print () для всех переменных.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...