问:您好,我是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-进入主事件循环以对用户触发的每个事件采取措施。