我正在尝试使用Tkinter添加用户输入的值并将其添加到文件中存在的值中,但是它不起作用

时间:2018-09-26 21:39:35

标签: python tkinter

我正在尝试为我的小型企业创建一个非常简单的忠诚度计划。这是我的第一个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 :(得分:0)

这是一个醒目的示例:

尝试:

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()。希望这会有所帮助。

答案 1 :(得分:0)

尝试将.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()