from nicegui import ui# 1. 创建温度转换函数(纯Python逻辑)def celsius_to_fahrenheit(celsius: float) -> float: """将摄氏度转换为华氏度""" return (celsius * 9/5) + 32def fahrenheit_to_celsius(fahrenheit: float) -> float: """将华氏度转换为摄氏度""" return (fahrenheit - 32) * 5/9# 2. 创建Web界面组件# 标题ui.label('🌡️ 温度转换器').classes('text-2xl font-bold text-blue-600')# 使用行布局,让两个输入框并排显示with ui.row().classes('w-full gap-4'): celsius_input = ui.input( label='摄氏度 (°C)', placeholder='输入摄氏度数值', validation={'请输入有效数字': lambda value: value == ''or value.replace('.', '', 1).isdigit()} ).classes('w-48') fahrenheit_input = ui.input( label='华氏度 (°F)', placeholder='输入华氏度数值', validation={'请输入有效数字': lambda value: value == ''or value.replace('.', '', 1).isdigit()} ).classes('w-48')# 3. 定义交互函数def update_fahrenheit(): """当摄氏度输入变化时,更新华氏度""" try: celsius = float(celsius_input.value) if celsius_input.value else0 fahrenheit = celsius_to_fahrenheit(celsius) fahrenheit_input.value = f'{fahrenheit:.2f}' except ValueError: # 输入无效时清空 fahrenheit_input.value = ''def update_celsius(): """当华氏度输入变化时,更新摄氏度""" try: fahrenheit = float(fahrenheit_input.value) if fahrenheit_input.value else0 celsius = fahrenheit_to_celsius(fahrenheit) celsius_input.value = f'{celsius:.2f}' except ValueError: celsius_input.value = ''# 4. 绑定事件:实时转换(无需点击按钮)celsius_input.on('update:model-value', lambda e: update_fahrenheit())fahrenheit_input.on('update:model-value', lambda e: update_celsius())# 5. 添加说明卡片with ui.card().classes('mt-4 w-full'): ui.label('💡 使用说明').classes('text-lg font-semibold') ui.label('• 在任意输入框中输入温度值') ui.label('• 另一输入框会自动实时转换') ui.label('• 支持小数输入,自动保留两位小数')# 6. 运行应用ui.run( title='温度转换器', favicon='🌡️', reload=True# 开发模式:代码修改后自动重载)