强烈推荐一个Python库!制作Web Gui也太简单了!

前言

之前小编用Python做GUI界面,首选就是Tkinter、PyQt5 。但是它们实现起来工作量及代码量太大,还要一步步设计调试界面排版等问题,而且界面最终呈现也不是特别美观,还有就是打包后太大等一系列问题。

最近公司同事刚好有个相关界面开发需求,给我推荐了Python的新型Gui库,不仅可以做本地GUI程序,还可以同步生成一个Web Gui 服务,将Gui界面同步到浏览器上展示。它就是 nicegui。

图片[1]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

NiceGui介绍

NiceGui 是一个简单易用的基于Python的Web-UI框架,其目的是使在Python中开发前端应用程序变得容易。

小编也看了下其源代码,Web相关服务/路由等是基于Python FastAPI 框架构建的。而 UI 元素基于 Vue 和 Quasar。NiceGui 带有许多现成的元素。它甚至允许不同元素之间的值绑定。可以轻松显示各种图表。

主要功能:

NiceGui的安装和使用 1、安装

使用 pip 下载 NiceGui(仅支持3.7及以上版本)

pip install nicegui

2、编写一个简单代码,测试其功能是否正常

from nicegui import ui
# 创建一个标签
ui.label('Welcome to NiceGui!')  
# 创建一个按钮,设置回调函数,调用niceui的弹窗消息通知
ui.button('Click Here', on_click=lambda: ui.notify('Button Pressed'))
# niceui 运行
ui.run()

点击运行后,终端会输出web url访问地址,自动打开浏览器

NiceGUI ready to go on http://localhost:8080, and http://192.168.0.102:8080

图片[2]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

NiceGui 基本元素的使用 1、图标和链接

ui.label('Display Icon')
ui.icon('settings', color='primary').classes('text-5xl')
ui.link('NiceGui on GitHub', 'https://github.com/zauberzeug/nicegui')
ui.run()

从上面的代码创建以下函数:

运行代码将产生以下输出:

图片[3]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

2、选择元素

NiceGui 有不同的选择元素,如切换框、单选框和复选框。

ui.label('Toggle Box')
toggle = ui.toggle([1, 2, 3], value=1)
ui.label('Radio Select')
radio = ui.radio(["one", "two", "three"], value=1).props('inline')
ui.label('Dropdown Select')
select = ui.select(["red", "blue", "green"], value=1)
ui.label('Check Box')
checkbox = ui.checkbox('check me')
ui.run()

上面代码中的函数包括:

图片[4]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

在这里,我们看到了我们创建的所有选择元素。单击 Dropdown Select,出现下拉操作,允许我们选择其中一个选项。这些只是我们研究过的部分元素。NiceGui 提供了广泛的元素以在各种场景中使用。

而且 NiceGui 支持不同 UI 元素之间的绑定值,允许无缝集成。

ui.label("Value Bindings")
with ui.row():
    radio1 = ui.radio([1, 2, 3], value=1).props('inline')
    toggle = ui.toggle({1: 'A', 2: 'B', 3: 'C'}).props('inline').bind_value(radio1, 'value')
ui.run()

在上面的代码中,我们使用 ui.row() 元素将两个元素(radio 和 toggle)水平分组。要将它们垂直分组,我们可以使用 ui.column()。toggle() 函数包含变量 bind_values(),它将单选选项连接到切换选项。

图片[5]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

在上面的图片中,我们可以清楚地看到两个 UI 元素之间的值绑定。同样,bind_value() 函数能够在 NiceGUI 提供的不同 UI 元素中工作。

3、用户输入和值绑定

允许用户在 UI 中输入文本或数字数据的功能。

ui.input(label='Text',
         on_change=lambda e: text_input.set_text('输入文本: ' + e.value))
text_input = ui.label()
ui.number(label='Number', value=3.1415, format='%.2f',
          on_change=lambda e: number_input.set_text('输入数字: ' + str(e.value)))
number_input = ui.label()
ui.run()

上面代码中的函数包括:

代码运行时,将产生以下输出:

图片[6]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

4、数据元素和图表

通过 NiceGui显示表格数据。

columns = [
    {'name': 'Name', 'label': 'Name', 'field': 'Name', 'required': True, 'align': 'center'},
    {'name': 'Sex', 'label': 'Sex', 'field': 'Sex'},
    {'name': 'Age', 'label': 'Age', 'field': 'Age'}
]
rows = [
    {'Name': '张三', 'Sex': "男", 'Age': 22},
    {'Name': '吴梅', 'Sex': "女", 'Age': 15},
    {'Name': '沈静', 'Sex': "女", 'Age': 25},
    {'Name': '王五', 'Sex': "男", 'Age': 18},
]
ui.table(title='Person Info', columns=columns, rows=rows, row_key='Name')
ui.run()

要显示表格,请在列列表中指定列名。每列由列表中的字典表示。包括每列的名称、标签和字段值(通常所有列都相同)。可以根据需要提供额外的键值对。

例如,“required:True”键值对确保名称列需要添加到表中的任何新元素的值。“align”:”center” 将整个行对齐到该列名称下的居中对齐方式。

接下来是行列表。行列表是包含上述列值的字典列表。这里使用字段名称,我们在字典中提供field:value对。然后使用 ui.table() 函数,我们将表格显示到 UI。在这里我们可以给表格命名。row_key 的列名包含唯一值。

运行此代码将给出以下输出:

图片[7]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

带有 NiceGui的 Pandas DataFrame

使用 table() 函数本身可以显示 Pandas 数据。

data = pd.DataFrame(data={'Name': ["张三", "吴梅"], 'Age': [22, 15]})
ui.table(
    columns=[{'name': column, 'label': column, 'field': column} for column in data.columns],
    rows=data.to_dict('records'),
)
ui.run()

图片[8]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

使用 NiceGUI 在屏幕上显示图形

使用 NiceGUI 中的 pyplot() 函数,它在 UI 上显示 matplotlib 图形。

import matplotlib
import numpy
from nicegui import ui
with ui.pyplot(figsize=(3, 2)):
    x = numpy.linspace(0.0, 10000.0, 10)
    y = numpy.log(x)
    matplotlib.pyplot.title('Log Graph')
    matplotlib.pyplot.plot(x, y, '-')
ui.run()

在这里,我们使用 with 命令,然后使用 ui.pyplot() 函数。我们甚至将图的大小传递给函数。

现在,在with下面,我们编写通过matplotlib绘制图形的代码。这里我们编写了一个简单的图,其中x轴包含从0到10000的值,步长为10,y轴包含它们的对数值。

代码运行时的输出将是:

图片[9]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

结论

开发人员使用 NiceGui(一种 Python Web 框架)来创建网站应用程序。其提供了必要的工具来开发一个完整的网站,所有的前端部分都完全在 Python 中。我们甚至看到了 NiceGUI 的不同元素以及如何接受用户输入。最后,我们通过绑定值了解了我们可以在不同的 UI 元素之间进行绑定的方法。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

图片[10]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

Python学习视频600合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

图片[11]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末 Python70个实战练手案例&源码

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片[12]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

Python大厂面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片[13]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

图片[14]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

Python副业兼职路线&方法

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

图片[15]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码免费领取【保证100%免费】

图片[16]-强烈推荐一个Python库!制作Web Gui也太简单了!-JieYingAI捷鹰AI

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享