NiceGUI:一个超赞的Python UI库

1. 引言

NiceGUI是一个基于Python的简单用户界面框架,可与浏览器或桌面应用程序流畅运行。无论你是制作小型网络应用程序、还是玩机器人项目,NiceGUI 都能以其简单的界面和众多的功能满足你的需求。这篇文章的目的是通过向大家展示如何构建和部署NiceGUI 应用程序,并列举该库的优缺点。

闲话少说,我们直接开始吧!

2. 安装

首先,让我们通过pip工具来安装该库,如下:

 pip install nicegui[highcharts]

安装过程如下:

在这里插入图片描述

3. 举个栗子

首先,让我们从官方文档中的一个例子开始,代码如下:

# https://nicegui.io/documentation/section_data_elements
from nicegui import ui 
from random import random

chart = ui.highchart({
    'title': False,
    'chart': {'type': 'bar'},
    'xAxis': {'categories': ['A', 'B']},
    'series': [
        {'name': 'Alpha', 'data': [0.1, 0.2]},
        {'name': 'Beta', 'data': [0.3, 0.4]},
    ],
}).classes('w-full h-64')

def update():
    chart.options['series'][0]['data'][0] = random()
    chart.update()

ui.button('Update', on_click=update)
ui.run()

运行后结果如下:
在这里插入图片描述
在上述代码中,niceui模块允许大家创建一个UI元素。 在这个例子中,我们首先创建了一个 highchart 元素,然后为其设置了 w-full h-64。其中,w-full 将使它以响应的方式水平占据整个屏幕,而 h-64 则指定了垂直方向上的高度。当我们点击UPDATE按钮时,会触发一个回调函数。该回调函数将更新用于生成图表的数据,然后以流畅的方式重新画图呈现。

4. 扩展显示数据

观察上图,我们还可以通过更改update回调函数用以添加新的显示条形图,代码如下:

def update():
    char_list = ["C","D","T","P","G","F"]
    chart.options["xAxis"]["categories"].append(random.choice(char_list))
    for series in chart.options['series']:
        series["data"].append(random.random())
    chart.update()

运行后,结果如下:
在这里插入图片描述
上述代码,每次点击UPDATE按钮后,会触发新增一行数据,并重新显示画图。请注意此时刷新页面并不会造成数据丢失!其他 Python UI 库无法做到这一点。这里之所以会这样,是因为数据是在所有用户之间共享的。

5. 实现计算器

计算器示例有两个可输入数字的空格、一个可以选择需要执行的操作(加、减、乘或除)的下拉菜单和一个点击执行计算的按钮。点击按钮后,计算结果将显示在屏幕上的标签中。

from nicegui import ui

def calculate():
    num1 = float(ui.input_number1.value)
    num2 = float(ui.input_number2.value)
    operation = ui.select.value
    if operation == 'add':
        result = num1 + num2
    elif operation == 'subtract':
        result = num1 - num2
    elif operation == 'multiply':
        result = num1 * num2
    elif operation == 'divide':
        result = num1 / num2
    else:
        result = 'Invalid operation'
    ui.label(f'Result: {result}')

ui.label('Number 1:')
ui.input_number1 = ui.number_input()
ui.label('Number 2:')
ui.input_number2 = ui.number_input()

ui.label('Operation:')
ui.select = ui.select(options=['add', 'subtract', 'multiply', 'divide'])
ui.button('Calculate', on_click=calculate)
ui.run()

我们首先来解释上述代码:

  • 我们先从NiceGUI 库中导入 ui 对象。
  • 接着我们创建了一个名为 calculate 的函数,点击 "Calculate "按钮时将触发调用该函数。
  • 该函数从两个输入框和下拉菜单中获取数值,执行选定的数学运算,并将结果显示在标签中。
  • 接下来,我们创建构成用户UI组件:两个用于输入数字的标签和输入框,一个用于选择操作的标签和下拉菜单,以及一个用于触发计算的按钮。
  • 此外,我们还指定在点击按钮时需要调用的计算函数。
  • 最后,我们使用命令 ui.run()来启动应用程序并在屏幕上显示用户界面。

运行上述代码后,结果如下:
在这里插入图片描述

6. 总结

NiceGUI 是一款强大而易用的Python工具,用于制作网页界面。其简单的设计、交互式功能以及与其他工具协同工作的能力使其适用于多种不同类型的项目。

如果你刚刚开始开发自己的网络应用程序,或是一名经验丰富的开发人员,正在寻找一种更有效的方法来创建UI界面,那么 NiceGUI 是一个值得考虑的选择。

您学废了嘛?

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Pygame模块可以用来实现很多有趣的游戏,其中包括经典的贪吃蛇游戏。通过使用Pygame模块的绘图功能,可以实现一个具有视觉效果的贪吃蛇游戏。 下面是一个简单的贪吃蛇游戏的实现: ```python import pygame import random # 初始化游戏 pygame.init() # 定义游戏窗口大小 win_width = 800 win_height = 600 # 创建游戏窗口 win = pygame.display.set_mode((win_width, win_height)) # 设置游戏标题 pygame.display.set_caption("贪吃蛇") # 定义颜色 white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) green = (0, 255, 0) # 设置游戏时钟 clock = pygame.time.Clock() # 定义蛇的属性 snake_block = 10 snake_speed = 15 # 定义字体 font_style = pygame.font.SysFont(None, 50) # 定义函数,用于显示文字 def message(msg, color): message = font_style.render(msg, True, color) win.blit(message, [win_width / 6, win_height / 3]) # 定义函数,用于绘制蛇 def draw_snake(snake_block, snake_list): for x in snake_list: pygame.draw.rect(win, green, [x[0], x[1], snake_block, snake_block]) # 定义游戏循环 def game_loop(): game_over = False game_close = False # 定义蛇的初始位置 x1 = win_width / 2 y1 = win_height / 2 # 定义蛇的移动方向 x1_change = 0 y1_change = 0 # 定义蛇的初始长度 snake_List = [] Length_of_snake = 1 # 定义食物的初始位置 foodx = round(random.randrange(0, win_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, win_height - snake_block) / 10.0) * 10.0 # 游戏循环 while not game_over: while game_close == True: win.fill(white) message("你输了,按 Q 退出,按 C 重新开始!", red) pygame.display.update() for event in pygame.event.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_q: game_over = True game_close = False if event.key == pygame.K_c: game_loop() for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x1_change = -snake_block y1_change = 0 elif event.key == pygame.K_RIGHT: x1_change = snake_block y1_change = 0 elif event.key == pygame.K_UP: y1_change = -snake_block x1_change = 0 elif event.key == pygame.K_DOWN: y1_change = snake_block x1_change = 0 # 判断蛇是否超出边界 if x1 >= win_width or x1 < 0 or y1 >= win_height or y1 < 0: game_close = True # 更新蛇的位置 x1 += x1_change y1 += y1_change # 绘制游戏背景 win.fill(white) # 绘制食物 pygame.draw.rect(win, red, [foodx, foody, snake_block, snake_block]) # 更新蛇的长度 snake_Head = [] snake_Head.append(x1) snake_Head.append(y1) snake_List.append(snake_Head) if len(snake_List) > Length_of_snake: del snake_List[0] # 判断蛇是否吃到食物 for x in snake_List[:-1]: if x == snake_Head: game_close = True # 绘制蛇 draw_snake(snake_block, snake_List) # 更新游戏窗口 pygame.display.update() # 判断蛇是否吃到食物 if x1 == foodx and y1 == foody: foodx = round(random.randrange(0, win_width - snake_block) / 10.0) * 10.0 foody = round(random.randrange(0, win_height - snake_block) / 10.0) * 10.0 Length_of_snake += 1 # 设置游戏速度 clock.tick(snake_speed) # 退出游戏 pygame.quit() quit() # 启动游戏循环 game_loop() ``` 这个程序可以实现一个基本的贪吃蛇游戏,玩家可以使用方向键控制蛇的移动方向,吃到食物后蛇的长度会增加。当蛇碰到边界或自己时,游戏结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵卓不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值