你熟悉几个GUI库?
写起来复杂吗?反正现在我都用AI写的,但如果是简单的输入框,你用另外一个库写起来会简单很多
优点:写起来最简单,仅用于页面,可展示pandas数据
缺点:仅支持streamlit命令运行程序,难以嵌入进综合项目
看看一个登录页面吧
import streamlit as st
st.title("用户登录")
# 表单
with st.form("login_form"):
username = st.text_input("用户名")
password = st.text_input("密码", type="password")
# 记住密码和立即注册在一行
col1, col2 = st.columns([3, 1])
with col1:
st.markdown("[立即注册](#)")
with col2:
remember = st.checkbox("记住密码")
login_button = st.form_submit_button("登录")
# 处理登录逻辑
if login_button:
if username and password:
st.success(f"欢迎回来,{username}!")
else:
st.error("请输入用户名和密码")
写一个AI对话页面还是可以的
优点:可以嵌入进项目,代码更符合GUI风格
缺点:相比streamlit,写起来比较复杂,页面需要手动美化,启动慢
看看一个登录页面吧
from nicegui import ui
username = ui.input('用户名')
password = ui.input('密码', password=True)
with ui.row():
remember = ui.checkbox('记住密码')
ui.link('注册', '#')
def login():
if username.value and password.value:
ui.notify(f'欢迎 {username.value}')
else:
ui.notify("请输入用户名和密码")
ui.button('登录', on_click=login)
ui.run()
如果你希望将它嵌入进自己的程序,不再是网页,可以这样写
from nicegui import app
def login():
app.shutdown()
... # 页面
if __name__ == '__main__':
a = input("输入用户名:")
username.value = a
ui.run(reload=False, native=True)
print(1)
这里输入用户名后创建窗口,关闭时候会打印1
nicegui和streamlit一样,本质都是页面,而nicegui的GUI界面依靠pywebview需要安装,用于显示基础元素还行,不能做太过复杂的东西
更复杂的还是用老牌库好点