用python的tkinter写一段计算器代码 数据要有圆周率 功能包括加减乘除 sin运算 cos运算 平方运算
时间: 2024-02-06 12:09:01 浏览: 71
如何利用python的tkinter实现一个简单的计算器.docx
好的,请参考以下代码,实现了一个简易的计算器,包括加减乘除、sin、cos、平方等运算,同时也有圆周率的数据:
```python
import tkinter as tk
import math
class Calculator:
def __init__(self, master):
self.master = master
master.title("Calculator")
# 创建输入框并放置
self.display = tk.Entry(master, width=30, justify='right', font=('Arial', 16))
self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5)
# 创建按钮并放置
buttons = [
['7', '8', '9', '/'],
['4', '5', '6', '*'],
['1', '2', '3', '-'],
['0', '.', 'pi', '+']
]
for row, button_row in enumerate(buttons, start=1):
for column, button_text in enumerate(button_row):
button = tk.Button(master, text=button_text, width=5, height=2)
button.grid(row=row, column=column, padx=5, pady=5)
button.bind('<Button-1>', self.button_click)
# 创建特殊功能按钮并放置
sin_button = tk.Button(master, text='sin', width=5, height=2)
sin_button.grid(row=5, column=0, padx=5, pady=5)
sin_button.bind('<Button-1>', self.sin_click)
cos_button = tk.Button(master, text='cos', width=5, height=2)
cos_button.grid(row=5, column=1, padx=5, pady=5)
cos_button.bind('<Button-1>', self.cos_click)
square_button = tk.Button(master, text='x^2', width=5, height=2)
square_button.grid(row=5, column=2, padx=5, pady=5)
square_button.bind('<Button-1>', self.square_click)
equal_button = tk.Button(master, text='=', width=5, height=2)
equal_button.grid(row=5, column=3, padx=5, pady=5)
equal_button.bind('<Button-1>', self.equal_click)
# 按钮点击事件
def button_click(self, event):
button_text = event.widget['text']
if button_text == 'pi':
self.display.insert(tk.END, str(math.pi))
else:
self.display.insert(tk.END, button_text)
# sin按钮点击事件
def sin_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(math.sin(float(self.display.get()))))
except ValueError:
pass
# cos按钮点击事件
def cos_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(math.cos(float(self.display.get()))))
except ValueError:
pass
# 平方按钮点击事件
def square_click(self, event):
try:
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(float(self.display.get()) ** 2))
except ValueError:
pass
# 等于按钮点击事件
def equal_click(self, event):
try:
result = eval(self.display.get())
self.display.delete(0, tk.END)
self.display.insert(tk.END, str(result))
except (ValueError, SyntaxError):
pass
# 创建主窗口并运行
root = tk.Tk()
calc = Calculator(root)
root.mainloop()
```
注:代码中的 eval 函数可以将字符串转换为可执行的表达式,并返回表达式的结果。但是 eval 函数有一定的安全风险,因此在实际开发中应该谨慎使用。
阅读全文