#eg&sg:在同一程序中比较-计算圆的面积
以下是一个同时使用easygui
和pysimplegui
实现的圆形面积计算程序,通过菜单让用户选择使用哪种GUI库:
import math
import easygui
import PySimpleGUI as sg
def easygui_calculator():
"""使用easygui实现的版本"""
title = "圆形面积计算器 (easygui版)"
while True:
radius = easygui.enterbox("请输入圆的半径:", title)
if radius is None: # 用户点击取消
return
try:
radius = float(radius)
area = math.pi * radius ** 2
easygui.msgbox(f"半径为 {radius} 的圆面积是:{area:.2f}", title)
except ValueError:
easygui.msgbox("请输入有效的数字!", "错误")
def pysimplegui_calculator():
"""使用PySimpleGUI实现的版本"""
layout = [
[sg.Text("请输入圆的半径:", font=("微软雅黑", 12))],
[sg.Input(key="RADIUS", size=20, font=("微软雅黑", 12))],
[sg.Button("计算", font=("微软雅黑", 12)), sg.Button("退出", font=("微软雅黑", 12))],
[sg.Text("", key="RESULT", size=30, font=("微软雅黑", 12), text_color="blue")]
]
window = sg.Window("圆形面积计算器 (PySimpleGUI版)", layout, finalize=True)
while True:
event, values = window.read()
if event in (sg.WIN_CLOSED, "退出"):
break
if event == "计算":
try:
radius = float(values["RADIUS"])
area = math.pi * radius ** 2
window["RESULT"].update(f"结果:{area:.2f}", text_color="green")
except ValueError:
sg.popup_error("请输入有效的数字!", font=("微软雅黑", 12))
window.close()
def main_menu():
"""主菜单选择界面"""
choices = ["easygui版本", "PySimpleGUI版本", "退出"]
title = "圆形面积计算器"
choice = easygui.choicebox("请选择使用的GUI库:", title, choices)
if choice == choices[0]:
easygui_calculator()
elif choice == choices[1]:
pysimplegui_calculator()
if __name__ == "__main__":
main_menu()
程序特点说明:
-
双库集成:
- 通过菜单选择使用
easygui
还是PySimpleGUI
- 两个实现完全独立,方便对比不同库的编程风格
- 通过菜单选择使用
-
easygui版本特点:
- 使用
enterbox
获取输入 - 使用
msgbox
显示结果 - 简单的异常处理
- 使用
-
PySimpleGUI版本特点:
- 创建带输入框和按钮的窗口
- 实时结果显示
- 更美观的界面布局
- 弹出错误提示窗口
-
统一菜单:
- 使用easygui的choicebox创建主菜单
- 清晰的选项布局
使用方法:
- 运行程序后首先看到主菜单
- 选择要使用的GUI库版本
- 在对应界面中输入半径数值
- 查看计算结果
安装依赖:
pip install easygui pysimplegui
这个程序完美实现了两个GUI库的集成,保持了代码的清晰结构,同时让用户可以直观地对比两种不同的GUI编程方式。