TEL:400-8793-956
当前位置:程序、服务器

在计算器python tkinter GUI上创建退格按钮

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-06 13:02:35

 问:您好,我是python的新手,我想修复“ C”按钮,以便清除显示屏上的最后一个数字。例如321将变为32,我已经尝试了很多方法,但是我似乎无法使其正常工作,如果有人可以使其工作,我将非常感激,谢谢。这是代码:

 
从tkinter导入*
 
class Calc():
    def __init __(self):
        self.total = 0
        self.current =“”
        self.new_num =真
        self.op_pending =假
        self.op =“”
        self.eq = False
 
 
    def num_press(self,num):
        self.eq = False
        temp = text_box.get()
        temp2 = str(num)      
        if self.new_num:
            self.current = temp2
            self.new_num = False
        否则:
            if temp2 =='。' :
                如果temp2在temp中:
                    返回
            self.current = temp + temp2
        self.display(self.current)
 
    def calc_total(self):
        self.eq =真
        self.current = float(self.current)
        如果self.op_pending == True:
            self.do_sum()
        否则:
            self.total = float(text_box.get())
 
    def显示(self,value):
        text_box.delete(0,END)
        text_box.insert(0,value)
 
    def do_sum(self):
        如果self.op ==“ add”:
            self.total + = self.current
        如果self.op ==“ minus”:
            self.total-= self.current
        如果self.op ==“ times “:
            self.total * = self.current,
        如果self.op ==” divide“:
            self.total / = self.current
        self.new_num =真实
        self.op_pending =虚假
        self.display(self.total)
 
    def运算(self,op): 
        self.current = float(self.current)
        如果self.op_pending:
            self.do_sum()如果
        不是self.eq:
            self.total = self.current
        self.new_num =真实
        self.op_pending =真
        self.op = op
        self.eq = False
 
    def cancel(self):
        self.eq =假
        self.current =“ 0”
        self.display(0)
        self.new_num = True
 
    def all_cancel(self):
        self.cancel()
        self.total = 0
 
    def sign(self):
        self.eq = False
        self.current =-(float(text_box.get()))
        self.display(self.current)
 
sum1 = Calc()
根= Tk()
calc =框架(根)
calc.grid()
 
root.title(“ Calculator”)
text_box =条目(calc,justify = RIGHT)
text_box.grid(行= 0,列= 0,columnspan = 3,pady = 5)
text_box.insert(0,“ 0”)
 
数字=“ 789456123”
i = 0
bttn = []
对于范围(1,4)中的j:
    对于范围(3)中的k:
        bttn.append(Button(calc,text =数字[i]))
        bttn [i] .grid(行= j,列= k,pady = 5)
        bttn [i] [“ command”] = lambda x =数字[i]:sum1.num_press(x)
        i + = 1
 
bttn_0 =按钮(计算,文本=“ 0”)
bttn_0 [“命令”] = lambda:sum1.num_press(0)
bttn_0.grid(行= 4,列= 1,pady = 5)
 
bttn_div =按钮(计算,文本= chr(247))
bttn_div [“ command”] = lambda:sum1.operation(“ divide”)
bttn_div.grid(行= 1,列= 3,pady = 5)
 
bttn_mult =按钮(计算,文本=“ x”)
bttn_mult [“ command”] = lambda:sum1.operation(“ times”)
bttn_mult.grid(行= 2,列= 3,pady = 5)
 
minus =按钮(计算,文本=“-”)
minus [“命令”] = lambda:sum1.operation(“ minus”)
minus.grid(行= 3,列= 3,pady = 5)
 
point = Button(calc,text =“。”)
point [“ command”] = lambda:sum1.num_press(“。”)
point.grid(行= 4,列= 0,pady = 5)
 
add = Button(calc,text =“ +”)
add [“ command”] = lambda:sum1.operation(“ add”)
add.grid(row = 4,column = 3,pady = 5)
 
neg =按钮(计算,文本=“ +/-”)
neg [“ command”] = sum1.sign
neg.grid(行= 5,列= 0,pady = 5)
 
clear =按钮(计算,文本=“ C”)
clear [“命令”] = sum1.cancel
clear.grid(行= 5,列= 1,pady = 5)
 
all_clear =按钮(计算,文本=“ AC”)
all_clear [“ command”] = sum1.all_cancel
all_clear.grid(行= 5,列= 2,pady = 5)
 
equals = Button(calc,text =“ =”)
equals [“ command”] = sum1.calc_total
equals.grid(行= 5,列= 3,pady = 5)
 
root.mainloop()
 
 
答:朋友,
如果您想清除显示屏上的最后一个数字,则必须退格,然后必须删除数组中的最后一个字符,并且函数应如下所示(如下所示)
 
def backspace_b(self):
  self.current = self.current [0:len(self.current)-1]
 
def backspace_b(self):
      self.current = self.current [:-1]
注意-使用Tkinter创建GUI应用程序时,必须遵循以下步骤
1-导入Tkinter模块。
 
2-创建GUI应用程序主窗口。
 
3-将一个或多个上述小部件添加到GUI应用程序。
 
4-进入主事件循环以对用户触发的每个事件采取措施。
上一篇: RMI注册java.rmi.connectexception连接被拒绝托管
下一篇: 在值本身是字典的情况下,如何设置dict [value]使其对应于dict [key]?