Phython编程:设计一个计算器,要求:图形界面,第一行显示输入的数字和结果,第二行为清除键clear,=,常数PI,第三行为0,4,8,+,第四行为1,5,9,-,第五行为2,6,小数点.,*,第六行为3,7开方sqrt,/,第八行为**,//,余弦cos,正弦sin
时间: 2024-05-05 14:17:46 浏览: 83
简单计算器的生成,练习图形界面开发
由于编程语言是 Python,我们可以使用 Python 的 GUI 模块 tkinter 来实现图形界面。下面是一个简单的计算器实现代码:
```python
import math
import tkinter as tk
class Calculator:
def __init__(self):
self.root = tk.Tk()
self.root.title("Calculator")
self.result = tk.StringVar()
self.result.set("")
self.input = tk.StringVar()
self.input.set("")
self.create_gui()
def create_gui(self):
# create the result label
result_label = tk.Label(self.root, textvariable=self.result, font=("Arial", 16), anchor="e", relief=tk.SUNKEN, bd=3)
result_label.grid(row=0, column=0, columnspan=4, sticky="we")
# create the input label
input_label = tk.Label(self.root, textvariable=self.input, font=("Arial", 8), anchor="e", relief=tk.SUNKEN, bd=3)
input_label.grid(row=1, column=0, columnspan=4, sticky="we")
# create the clear button
clear_button = tk.Button(self.root, text="clear", command=self.clear)
clear_button.grid(row=2, column=0)
# create the pi button
pi_button = tk.Button(self.root, text="π", command=lambda: self.add_digit(math.pi))
pi_button.grid(row=2, column=1)
# create the equal button
equal_button = tk.Button(self.root, text="=", command=self.calculate)
equal_button.grid(row=2, column=2)
# create the 0,4,8 button
button_0 = tk.Button(self.root, text="0", command=lambda: self.add_digit("0"))
button_0.grid(row=3, column=0)
button_4 = tk.Button(self.root, text="4", command=lambda: self.add_digit("4"))
button_4.grid(row=3, column=1)
button_8 = tk.Button(self.root, text="8", command=lambda: self.add_digit("8"))
button_8.grid(row=3, column=2)
# create the 1,5,9,- button
button_1 = tk.Button(self.root, text="1", command=lambda: self.add_digit("1"))
button_1.grid(row=4, column=0)
button_5 = tk.Button(self.root, text="5", command=lambda: self.add_digit("5"))
button_5.grid(row=4, column=1)
button_9 = tk.Button(self.root, text="9", command=lambda: self.add_digit("9"))
button_9.grid(row=4, column=2)
button_minus = tk.Button(self.root, text="-", command=lambda: self.add_digit("-"))
button_minus.grid(row=4, column=3)
# create the 2,6,.,* button
button_2 = tk.Button(self.root, text="2", command=lambda: self.add_digit("2"))
button_2.grid(row=5, column=0)
button_6 = tk.Button(self.root, text="6", command=lambda: self.add_digit("6"))
button_6.grid(row=5, column=1)
button_dot = tk.Button(self.root, text=".", command=lambda: self.add_digit("."))
button_dot.grid(row=5, column=2)
button_multiply = tk.Button(self.root, text="*", command=lambda: self.add_digit("*"))
button_multiply.grid(row=5, column=3)
# create the 3,7,sqrt,/ button
button_3 = tk.Button(self.root, text="3", command=lambda: self.add_digit("3"))
button_3.grid(row=6, column=0)
button_7 = tk.Button(self.root, text="7", command=lambda: self.add_digit("7"))
button_7.grid(row=6, column=1)
button_sqrt = tk.Button(self.root, text="√", command=self.square_root)
button_sqrt.grid(row=6, column=2)
button_divide = tk.Button(self.root, text="/", command=lambda: self.add_digit("/"))
button_divide.grid(row=6, column=3)
# create the **,//,cos,sin button
button_power = tk.Button(self.root, text="**", command=lambda: self.add_digit("**"))
button_power.grid(row=7, column=0)
button_floor_divide = tk.Button(self.root, text="//", command=lambda: self.add_digit("//"))
button_floor_divide.grid(row=7, column=1)
button_cos = tk.Button(self.root, text="cos", command=self.cosine)
button_cos.grid(row=7, column=2)
button_sin = tk.Button(self.root, text="sin", command=self.sine)
button_sin.grid(row=7, column=3)
def add_digit(self, digit):
self.input.set(self.input.get() + digit)
def clear(self):
self.input.set("")
self.result.set("")
def calculate(self):
try:
result = eval(self.input.get())
self.result.set(result)
except:
self.result.set("Error")
def square_root(self):
try:
result = math.sqrt(float(self.input.get()))
self.result.set(result)
except:
self.result.set("Error")
def cosine(self):
try:
result = math.cos(float(self.input.get()))
self.result.set(result)
except:
self.result.set("Error")
def sine(self):
try:
result = math.sin(float(self.input.get()))
self.result.set(result)
except:
self.result.set("Error")
def run(self):
self.root.mainloop()
if __name__ == "__main__":
calculator = Calculator()
calculator.run()
```
这个代码创建了一个 `Calculator` 类,它包含了一个 Tkinter 的主窗口,以及各种计算器按钮和方法。在 `create_gui` 方法中,我们使用 Tkinter 的 `Label` 和 `Button` 组件创建了计算器的各个部分。在每个按钮的 `command` 参数中,我们使用了 `lambda` 表达式来传递参数,以便在按钮被按下时调用相应的方法。
在 `add_digit` 方法中,我们将被按下的数字或运算符添加到输入框中。在 `clear` 方法中,我们清空了输入框和结果框。在 `calculate` 方法中,我们使用 `eval` 函数计算输入框中的表达式,并将结果显示在结果框中。在 `square_root`、`cosine` 和 `sine` 方法中,我们分别计算了输入框中的平方根、余弦值和正弦值,并将结果显示在结果框中。
最后,在 `run` 方法中,我们调用了 Tkinter 的 `mainloop` 方法,以便让主窗口显示并响应用户的操作。
阅读全文