用Python(推荐导入PySimpleGUI库)写一个面积计算器,首先在主界面选择需要计算矩形、三角形、圆形哪种图形的面积,然后根据选择跳转其对应的界面输入需要的数据并跳转结果界面,得到结果后跳转到主界面,可以重新使用这个程序,并且程序不会崩溃
时间: 2023-12-06 17:40:59 浏览: 54
好的,以下是代码实现:
``` python
import PySimpleGUI as sg
# 界面样式
sg.theme('Dark')
# 定义矩形界面
def rectangle_layout():
return [[sg.Text('请输入矩形的长和宽')],
[sg.Text('长', size=(6, 1)), sg.InputText(key='-RECT_LENGTH-')],
[sg.Text('宽', size=(6, 1)), sg.InputText(key='-RECT_WIDTH-')],
[sg.Button('计算'), sg.Button('取消')]]
# 定义三角形界面
def triangle_layout():
return [[sg.Text('请输入三角形的底和高')],
[sg.Text('底', size=(6, 1)), sg.InputText(key='-TRI_BASE-')],
[sg.Text('高', size=(6, 1)), sg.InputText(key='-TRI_HEIGHT-')],
[sg.Button('计算'), sg.Button('取消')]]
# 定义圆形界面
def circle_layout():
return [[sg.Text('请输入圆的半径')],
[sg.Text('半径', size=(6, 1)), sg.InputText(key='-CIR_RADIUS-')],
[sg.Button('计算'), sg.Button('取消')]]
# 计算矩形面积函数
def rectangle_area(length, width):
return round(length * width, 2)
# 计算三角形面积函数
def triangle_area(base, height):
return round((base * height) / 2, 2)
# 计算圆形面积函数
def circle_area(radius):
return round(3.14 * (radius ** 2), 2)
# 主界面布局
layout = [[sg.Text('请选择需要计算面积的图形')],
[sg.Button('矩形'), sg.Button('三角形'), sg.Button('圆形'), sg.Button('退出')]]
# 创建窗口
window = sg.Window('面积计算器', layout)
# 事件循环
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED or event == '退出':
break
elif event == '矩形':
sub_window = sg.Window('矩形面积计算', rectangle_layout())
while True:
sub_event, sub_values = sub_window.read()
if sub_event == sg.WINDOW_CLOSED or sub_event == '取消':
break
elif sub_event == '计算':
length = float(sub_values['-RECT_LENGTH-'])
width = float(sub_values['-RECT_WIDTH-'])
area = rectangle_area(length, width)
sg.popup('矩形的面积为:{}'.format(area))
sub_window.close()
window.un_hide()
elif event == '三角形':
sub_window = sg.Window('三角形面积计算', triangle_layout())
while True:
sub_event, sub_values = sub_window.read()
if sub_event == sg.WINDOW_CLOSED or sub_event == '取消':
break
elif sub_event == '计算':
base = float(sub_values['-TRI_BASE-'])
height = float(sub_values['-TRI_HEIGHT-'])
area = triangle_area(base, height)
sg.popup('三角形的面积为:{}'.format(area))
sub_window.close()
window.un_hide()
elif event == '圆形':
sub_window = sg.Window('圆形面积计算', circle_layout())
while True:
sub_event, sub_values = sub_window.read()
if sub_event == sg.WINDOW_CLOSED or sub_event == '取消':
break
elif sub_event == '计算':
radius = float(sub_values['-CIR_RADIUS-'])
area = circle_area(radius)
sg.popup('圆形的面积为:{}'.format(area))
sub_window.close()
window.un_hide()
# 关闭窗口
window.close()
```
代码的运行效果如下图所示:
![image](https://user-images.githubusercontent.com/38643428/123755668-f5c3f180-d8ee-11eb-8c4d-0c9cd7b8815e.png)
你可以根据需要进行修改和优化,我这里提供了一个基本的思路和实现方式。
阅读全文