如何在计算器脚本中加入输入限制999?

时间:2014-06-23 20:22:36

标签: python-3.3

我知道这是过去一个帖子的重复,但当我使用该建议时,它表示“unindent与任何外部缩进级别都不匹配”。当我在学校运行脚本(这是一个学校作业)时,会出现一个没有按钮的空白GUI,当我在家中运行它时,会出现上面的错误消息 - 我在每台计算机上使用Python 3.3.2。 999限制的代码在第45-57行,错误消息显示在第一行(45)。我对python很新,我的老师很糟糕,如果我的问题听起来很傻,那就道歉了。我可以就如何使其发挥作用提出建议吗? 非常感谢!

from tkinter import *

class Calculator(Frame):

    def frame(this, side): 
        w = Frame(this)
        w.pack(side=side, expand=YES, fill=BOTH)
        return w


    def button(this, root, side, text, command=None): 
        w = Button(root, text=text, command=command) 
        w.pack(side=side, expand=YES, fill=BOTH)
        return w    

    need_clr = False
    def digit(self, digit):
        if self.need_clr:
            self.display.set('')
            self.need_clr = False
        self.display.set(self.display.get() + digit)

    def sign(self):
        need_clr = False
        cont = self.display.get()
        if len(cont) > 0 and cont[0] == '-':
            self.display.set(cont[1:])
        else:
            self.display.set('-' + cont)


    def oper(self, op):
        self.display.set(self.display.get() + ' ' + op + ' ')
        self.need_clr = False

    def calc(self):
        try:
            self.display.set(eval(self.display.get()))
            self.need_clr = True
        except:
            showerror('Operation Error', 'Illegal Operation')
            self.display.set('')
            self.need_clr = False

   def calc(self):
       try:
           self.display.set(self.validate_result(eval(self.display.get())))
           self.need_clr = True
           except:
               showerror('Operation Error', 'Illegal Operation')
               self.display.set('')
               self.need_clr = False
               def validate_result(self, result):
                   if result >= 1000:
                       raise ValueError('result too big!')
                    else:
                        return result

    def __init__(self):
        Frame.__init__(self)
        self.option_add('*Font', 'Dotum 15')
        self.pack(expand=YES, fill=BOTH)
        self.master.title('Simple Calculator')

        self.display = StringVar()
        e = Entry(self, relief=SUNKEN, textvariable=self.display)
        e.pack(side=TOP, expand=YES, fill=BOTH)

        for key in ("123", "456", "789"):
            keyF = self.frame(TOP)
            for char in key:
                self.button(keyF, LEFT, char,
                            lambda c=char: self.digit(c))

        keyF = self.frame(TOP)
        self.button(keyF, LEFT, '0', lambda ch='0': self.digit(ch))

        opsF = self.frame(TOP)
        for char in "+-=":
            if char == '=':
                btn = self.button(opsF, LEFT, char, self.calc)
            else:
                btn = self.button(opsF, LEFT, char, 
                                  lambda w=self, s=char: w.oper(s))

        clearF = self.frame(BOTTOM)
        self.button(clearF, LEFT, 'Clr', lambda w=self.display: w.set(''))

if __name__ == '__main__':
    Calculator().mainloop()

0 个答案:

没有答案