首页 > 解决方案 > 号码是添加而不是删除,我不知道为什么?

问题描述

我仍然在 Tkinter 中搞乱,但试图在当前和花费列表中取得平衡。理论上,这应该在每次触发时将花费的值减少 10。但它反而会增加 10

我已经尝试在定义 Spent2 的位置移动,但我只是得到一个未定义的错误。我想可能是因为它变成了负数?因此,当我从 Balance 值中获取花费的 2 值时,它会添加它。如果是这样,我将如何解决这个问题

会员等级

class Member:
    year = 0
    spent2 = 0
    def __init__(self, name, rank, spent):
        self.name = name
        self.rank = rank
        self.spent = spent

    def sal(self):
        rank10 = str(int(self.rank) * 100)
        print(self.name +" is earning "+ rank10)

    def bal_year(self):
        bal10 = str(int(self.rank) * 100 * int(self.year) - int(self.spent))
        print(self.name +" has £"+ bal10)

Sp10 称为

def bread():
    br=Tk()

    def sp(old:Tk):
        old.destroy()
        Tiger()
        sp10()




    br.title('Bread')
    l4 = Label(br, text="What would you like to buy Tiger bread, a Bageutte or a Loaf Bread?").pack()
    br1 = Button(br, text = "Buy Tiger Bread", command = lambda: sp(br))
    br1.pack()

改变花费值

def sp10():
    Member.spent2 = (Member.spent2 - int(10))

对我的班级成员的测试

def balance():
    doppy = Member("DoppyRex", "6", Member.spent2)
    doppy.bal_year()

我预计它将整体余额减少 10,但它会增加 10。

标签: pythonpython-3.x

解决方案


我认为问题在于您正在降低花费的金额:

def sp10():
    Member.spent2 = (Member.spent2 - int(10))

10,这意味着余额

bal10 = str(int(self.rank) * 100 * int(self.year) - int(self.spent))

增加了 10,因为你减去了 self.spent。


推荐阅读