Nicegui 卡片 ui.card 案例 1

41 阅读3分钟

image.png

代码:

from nicegui import ui

# 创建一个全宽度的列容器,包含内边距
with ui.column().classes('w-full p-6'):
    # 标题行:包含图标和标题
    with ui.row().classes('items-center mb-8').props('align-items: center'):
        # 仪表盘图标,蓝色,大小3xl,右边距
        ui.icon('dashboard').classes('text-3xl text-blue-600 mr-3')
        # 标题文本:系统概览,大小2xl,粗体
        ui.label('系统概览').classes('text-2xl font-bold')
    
    # 卡片容器:使用flex布局,卡片间有间距,允许换行
    with ui.row().classes('gap-6 flex-wrap'):
        # 循环创建三个统计卡片
        # 每个卡片的数据:标题、数量、图标、渐变色起始颜色、渐变色结束颜色
        for title, count, icon, color1, color2 in [
            # 待处理卡片:橙色渐变,5条记录
            ('待处理', 5, 'access_time', '#ff9800', '#ff5722'),
            # 维修中卡片:蓝色渐变,3条记录
            ('维修中', 3, 'build', '#2196f3', '#1976d2'),
            # 已完成卡片:绿色渐变,12条记录
            ('已完成', 12, 'check_circle', '#4caf50', '#2e7d32')
        ]:
            # 创建卡片,使用135度渐变背景色
            with ui.card().style(f'background: linear-gradient(135deg, {color1}, {color2});'):
                # 卡片内容容器:垂直居中,白色文字
                with ui.column().classes('items-center text-white'):
                    # 图标:大小4xl,底部间距
                    ui.icon(icon).classes('text-4xl mb-2')
                    # 标题:大小lg,粗体,底部间距
                    ui.label(title).classes('text-lg font-semibold mb-1')
                    # 数量:大小5xl,粗体,垂直间距
                    ui.label(str(count)).classes('text-5xl font-bold my-2')
                    # 单位文字:小号,90%透明度
                    ui.label('条记录').classes('text-sm opacity-90')

# 运行NiceGUI应用
# host='0.0.0.0':允许所有网络接口访问
# port=8087:使用8087端口
# title='维修登记系统':浏览器标签页标题
ui.run(host='0.0.0.0', port=8087, title='维修登记系统')

代码结构说明:

1. 布局结构

  • ui.column():垂直布局容器
  • ui.row():水平布局容器
  • with语句:用于创建嵌套的UI元素

2. CSS类说明

  • w-full:宽度100%
  • p-6:内边距1.5rem(24px)
  • items-center:垂直居中
  • mb-8:底部边距2rem(32px)
  • gap-6:元素间距1.5rem(24px)
  • flex-wrap:允许换行
  • text-3xl:字体大小1.875rem(30px)
  • text-blue-600:蓝色文字
  • mr-3:右边距0.75rem(12px)

3. 卡片设计特点

  1. 渐变背景:135度角渐变,从浅色到深色

  2. 颜色主题

    • 橙色系:待处理状态
    • 蓝色系:进行中状态
    • 绿色系:完成状态
  3. 文字统一:所有文字为白色,确保在深色背景上可读

  4. 层次分明:图标>标题>数量>单位,大小递减

4. 图标说明

  • dashboard:Material Design的仪表盘图标
  • access_time:时钟图标,表示待处理
  • build:工具图标,表示维修中
  • check_circle:对勾圆圈图标,表示已完成

5. 响应式特性

  • flex-wrap:当屏幕宽度不足时,卡片会自动换行
  • 卡片采用弹性宽度,适应不同屏幕尺寸

这段代码创建了一个简洁美观的系统概览仪表盘,包含三个状态统计卡片,适合用于维修管理、任务跟踪等场景。