Python Web框架:Streamlit
一、简介Streamlithttps://docs.streamlit.io/是一个基于tornado框架的快速搭建Web应用的Python库封装了大量常用组件方法支持大量数据表、图表等对象的渲染支持网格化、响应式布局。简单来说可以让不了解前端的人搭建网页。相比于同类产品PyWebIOStreamlit的功能更加全面一些https://docs.streamlit.io/develop/api-reference。文本元素数据元素图标元素输入组件媒体元素布局和容器聊天元素状态元素三方组件1.1 安装# 安装依赖pip install streamlit1.2 运行app.python# 导入模块importasst st.title(Hello World)运行网页需要在终端中通过streamlit命令来运行 run 某个python文件运行后会自动打开网页http://localhost:8051。# 先切换到python文件所在的目录D:\streamlit run app.py二、API Reference写 writeWrite argurnents to the app.st.write(Hello world)写流 write_streamWrite generators or streams to the appwith a typewriter effect.st.write_stream(my_generator)st.write_stream(my_llm_stream)头 headerst.header(Hello world)标题 titlest.title(Hello World)markdownst.markdown(Hello **World**)分割线 dividerst.divider()吐司 Toastst.toast(吐司提示,icon✅)成功 successst.success(操作成功)按钮 buttonst.button(按钮)文本输入框 text_inputnamest.text_input(姓名,melong)st.write(当前输入内容为,name)日期importdatetimeimportstreamlitasst event_timest.datetime_input(生日,datetime.datetime(2026,4,26,16,45),)st.write(生日是:,event_time)表格 tableimportpandasaspdimportstreamlitasst confusion_matrixpd.DataFrame({Predicted Cat:[85,3,2,1],Predicted Dog:[2,78,4,0],Predicted Bird:[1,5,72,3],Predicted Fish:[0,2,1,89],},index[Actual Cat,Actual Dog,Actual Bird,Actual Fish],)st.table(confusion_matrix)文件上传 file_uploaderimportpandasaspdimportstreamlitasst filesst.file_uploader(Upload files,accept_multiple_filesTrue,type[csv,xlsx],)iffiles:forfileinfiles:st.subheader(file.name)suffixfile.name.lower().rsplit(.,maxsplit1)[-1]ifsuffixcsv:dfpd.read_csv(file)else:dfpd.read_excel(file)st.dataframe(df,use_container_widthTrue)图片st.image(https://example.com/myimage.jpg)st.pdf(my_document.pdf)图表 Chartimportpandasaspdimportstreamlitasstfromnumpy.randomimportdefault_rngasrng dfpd.DataFrame(rng(0).standard_normal((20,3)),columns[a,b,c])st.bar_chart(df)聊天输入框 chat_inputpromptst.chat_input()st.write(prompt)输入你好旋转器 spinner加载中importtimewithst.spinner(思考中...):time.sleep(1)聊天消息 chat_messagest.chat_message(user).write(prompt)st.chat_message(assistant).write_stream(prompt)会话状态 session_state当页面元素发生任何变化时都会重新刷新页面并且重新执行代码也就是页面是无状态的。当刷新后再想获取之前执行后的结果需要借助会话状态将执行后的结果保存到会话状态中。当页面再刷新后可以从会话状态中获取原来执行的结果。session_state 本身是一个对象可以往这个对象中添加任意属性和取值。ifmessagenotinst.session_state:st.session_state[message][]st.session_state[message].append({role:user,content:用户的提示词prompt})importstreamlitasstifmessagenotinst.session_state:st.session_state[message][{role:assistant,content:我是一个AI助手有什么可以帮助您的}]promptst.chat_input()ifprompt:st.session_state[message].append({role:user,content:prompt})ifst.session_state[message]:formessageinst.session_state[message]:withst.chat_message(message[role]):st.write(message[content])重新运行 rerun手动刷新页面st.rerun()