深圳建站模板建站,怎么改版网站,掀浪云网站建设,seo的基本内容问题背景
假设我们需要创建一个类似于微软计算器的 GUI 计算器。这个计算器应该具有以下功能#xff1a;
能够显示第一个输入的数字。当按下运算符时#xff0c;输入框仍显示第一个数字。当按下第二个数字时#xff0c;第一个数字被替换。
解决方案
为了解决这个问题
能够显示第一个输入的数字。当按下运算符时输入框仍显示第一个数字。当按下第二个数字时第一个数字被替换。
解决方案
为了解决这个问题我们需要使用状态的概念。每次按下按键时检查状态并确定要采取的操作。
起始状态输入数字。当按下运算符按钮时存储运算符改变状态。当按下另一个数字时存储数字清除数字输入重新开始数字输入。当按下等号按钮时使用存储的数字和运算符以及数字输入中的当前数字执行操作。
使用动态语言例如 Python可以改变处理按键/按钮按下事件的函数而不是使用变量和 if 语句来检查状态。
import tkinter as tkclass Calculator:def __init__(self):self.window tk.Tk()self.window.title(Calculator)# 创建显示屏self.display tk.Entry(self.window, width30)self.display.grid(row0, column0, columnspan4)# 创建数字按钮self.buttons [[7, 8, 9, /],[4, 5, 6, *],[1, 2, 3, -],[0, ., , ]]# 创建运算符按钮self.operators [/, *, -, ]# 创建状态变量self.state number# 创建数字列表self.numbers []# 创建运算符列表self.operators []# 创建计算结果变量self.result None# 创建按钮for row in range(4):for column in range(4):button tk.Button(self.window, textself.buttons[row][column], commandlambda rowrow, columncolumn: self.handle_button_press(row, column))button.grid(rowrow1, columncolumn)def handle_button_press(self, row, column):# 获取按钮值button_value self.buttons[row][column]# 检查按钮值是否是数字if button_value in 0123456789.:# 如果是数字则将数字添加到数字列表self.numbers.append(button_value)# 更新显示屏self.display.delete(0, tk.END)self.display.insert(0, .join(self.numbers))# 检查按钮值是否是运算符elif button_value in self.operators:# 如果是运算符则将运算符添加到运算符列表self.operators.append(button_value)# 改变状态self.state operator# 更新显示屏self.display.delete(0, tk.END)self.display.insert(0, .join(self.operators))# 检查按钮值是否是等号elif button_value :# 如果是等号则执行计算self.result eval(.join(self.numbers) self.operators[0] .join(self.numbers))# 更新显示屏self.display.delete(0, tk.END)self.display.insert(0, self.result)# 重置状态self.state number# 清空数字列表和运算符列表self.numbers []self.operators []def run(self):self.window.mainloop()if __name__ __main__:calculator Calculator()calculator.run()