为什么我的程序输出显示无效的Int输入,即使没有语法错误?

时间:2017-05-21 13:59:55

标签: python tkinter

我在Tkinter GUI中相当新,我还有很多我不明白的东西。 我真的被我的计划困住了,我真的需要别人的指导来告诉我为什么我的计划有问题。

我遇到的问题是我想向银行存入一定数额的资金并用当前可用余额计算,但是当我输入金额时,我得到的输出是“输入的金额无效”# 39;,即使我输入了正确的数字,例如20或50等等。

有人可以帮助我:

以下是代码:

class Demo4():
    def __init__(self,master):
            self.master=master
            self.frame=Frame(self.master)
            self.frame.grid()
            self.master.minsize(width=400,height=120)
            self.master.title('Deposit')
            self.label_1=Label(self.frame,text='Deposit Amount:')
            self.label_1.grid(row=1,padx=7,pady=5,sticky='we')
            self.label_2=Label(self.frame,text='Balance:')
            self.label_2.grid(row=2,padx=7,pady=5,sticky='e')
            self.button_1=Button(self.frame,text='Calculate',width=8,height=3,
                                 command=self.MakeDeposit)
            self.button_1.grid(row=1,column=10,sticky='e'+'w',padx=7,rowspan=2)
            self.entry_1=Entry(self.frame,width=40)
            self.entry_1.grid(row=1,column=1, sticky='e'+'w',columnspan=3)
            self.entry_2=Entry(self.frame,width=40)
            self.entry_2.grid(row=2,column=1,sticky='e'+'w',columnspan=3)
            self.logLabel=Label(self.frame,text='DEPOSIT',font="Helvetica 10 bold italic")
            self.logLabel.grid(row=0,padx=5,pady=5)

            self.e2=IntVar()
            self.e1=IntVar()

我知道代码Class Demo4的第一部分正在运行,因为我试图自己测试它。我认为问题是MakeDeposit函数的第二部分。

def MakeDeposit(self):
    self.e2=IntVar()
    self.e1=IntVar()
    num2 = self.e2.get()
    balance = int(num2)
    num1 = self.e1.get()
    depositAmount = int(num1)
    while depositAmount<=0:
       self.errorLabel = Label(self.frame,text="That was not a valid amount").grid(row=3,columnspan=5)
       return
       if self.depositAmount>0:
           self.textLabel = Label(self.frame,text=("Your new balance is:\n")).grid(row=3,columnspan=5)
           self.newBalanceLabel = Label(self.frame,text=(balance+depositAmount)).grid(row=4,columnspan=5, pady=7)

现在,我遇到的问题是,当我输入第一笔存款金额并添加存款可用的余额时(因为这是我知道如何编码的唯一方式)我得到一个对话框,表示输入的金额无效&#39;,这意味着while循环无法正常运行。不幸的是,我尝试了不同的变化,但它仍然不起作用。

请帮助,我真的被卡住了。

我也试图改变变量和名称的布局,但它仍然给我同样的错误:

以下是更改:

class Demo4():

    def __init__(self,master):
        self.master=master
        self.frame=Frame(self.master)
        self.frame.grid()
        self.master.minsize(width=400,height=120)

        self.e_2=IntVar()
        self.e_1=IntVar()

        self.master.title('Deposit')
        self.label_1=Label(self.frame,text='Deposit Amount:')
        self.label_1.grid(row=1,padx=7,pady=5,sticky='we')
        self.label_2=Label(self.frame,text='Balance:')
        self.label_2.grid(row=2,padx=7,pady=5,sticky='e')
        self.button_1=Button(self.frame,text='Calculate',width=8,height=3,command=self.MakeDeposit)
        self.button_1.grid(row=1,column=10,sticky='e'+'w',padx=7,rowspan=2)
        self.entry_1=Entry(self.frame,width=40,textvariable=self.e_1)
        self.entry_1.grid(row=1,column=1, sticky='e'+'w',columnspan=3)
        self.entry_2=Entry(self.frame,width=40,textvariable=self.e_2)
        self.entry_2.grid(row=2,column=1,sticky='e'+'w',columnspan=3)
        self.logLabel=Label(self.frame,text='DEPOSIT',font="Helvetica 10 bold italic")
        self.logLabel.grid(row=0,padx=5,pady=5)

    def MakeDeposit(self):
        self.entry_2=IntVar()
        self.entry_1=IntVar()

        num2 = self.entry_2.get()
        balance = int(num2)
        num1 = self.entry_1.get()
        depositAmount = int(num1)
        while depositAmount<=0:
            self.errorLabel = Label(self.frame,text="That was not a valid amount").grid(row=3,columnspan=5)
            return
        if depositAmount>0:
            self.textLabel = Label(self.frame,text=("Your new balance is:\n")).grid(row=3,columnspan=5)
            self.newBalanceLabel = Label(self.frame,text=(balance+depositAmount)).grid(row=4,columnspan=5, pady=7)

0 个答案:

没有答案