惊呆!用streamlit快速搭建炫酷站点!

news2024/11/26 5:32:31

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。

所以建议大家加个星标,就能第一时间收到推送。👇

b9c7472e796f3f6fe9651e607bc5ee34.jpeg

今天给大家推荐一个Streamlit带导航的网页应用制作方法。

streamlit-option-menu是一个全新的网页导航制作模块包,安装方法:

pip install streamlit_option_menu

今天的实现效果

已部署到linux服务器上 http://www.ssw.fit:8501/

今天的实现效果.mp4

可以一个小脚本,很简单就做一个侧边导航栏、自我介绍、浏览图片音频视频、单词翻译、可视化、在线浏览PDF文档等等。

比较来说,它比用django、flask等框架搭一个站点,或docsify、vuepress、pelican等博客建设工具来的快。很多时候,我们只需要简单展示一些东西,收集几首有趣的歌曲,帮我翻译个单词,如此如此就好啦,不要给我搞得太麻烦!

侧边导航栏

2bc2e3ddba29b9d8c0a1f10ca00f19a9.png

Img
import streamlit as st,requests,json
from streamlit_option_menu import option_menu
import streamlit.components.v1 as html

st.set_page_config(page_title="桃花朵朵开", page_icon="💖", layout="wide")


sysmenu = '''
<style>
#MainMenu {visibility:hidden;}
footer {visibility:hidden;}
'''
st.markdown(sysmenu,unsafe_allow_html=True)
with st.sidebar:
    choose = option_menu("ssw", ["介绍", "图片/音乐/视频", "数据可视化", "翻译", "其他应用"],
                         icons=['house', 'file-earmark-music', 'bar-chart', 'translate', 'brightness-high'],
                         menu_icon="broadcast", default_index=0)

第一个参数是文字提示。第二个参数是一个列表,用于列出你的导航栏中有哪些内容,可以理解为提纲。第三个参数是第二个参数对应的图标,这些图标可以从bootstrap网站找到。https://icons.bootcss.com/

图片音频视频

13442f741fa4a5bc7fb6bcb320bb08bf.png

Img
elif choose == "图片/音乐/视频":
    selecte1 = option_menu(None, ["图片", "音乐", "视频"],
        icons=['house', 'cloud-upload', "list-task"],
        menu_icon="cast", default_index=0, orientation="horizontal")
    if selecte1 == "图片":
        with st.container():
            col1 = st.columns(1)
            with col1:
                st.image("./图片/1.jpg")
        with st.container():
            st.image("./图片/5.jpg")
    elif selecte1 == "音乐":
        st.write("1. Day By Day")
        st.audio("./音乐/1.flac")
    elif selecte1 == "视频":
        st.video("./视频/1.mp4")

数据可视化

d98ae5a47124d71b23a010832a033ffb.png

Img

可以结合Echarts、Plotly等,如Plotly柱状图:

elif choose == "数据可视化":
    selecte2 = option_menu(None, ["Plotly"],
                           icons=["list-task"],
                           menu_icon="cast", default_index=0, orientation="horizontal")

    if selecte2 == "Plotly":
        import plotly.graph_objs as go
        c1, c2, c3, c4, c5 = st.columns([0.05, 1.5, 0.2, 1.5, 0.2])
        with c1:
            st.empty()
        with c2:
            # 柱状图
            trace_basic = [go.Bar(
            。。略

单词翻译

23c193b658324b2efd532ea2b7a621b1.png

Img

结合Streamlit,可以花几分钟时间打造出我们自己的中英单词互翻工具。原理如下:

  1. 使用requests.get构造一个请求,把我们要查询的内容发送到指定的网址

  2. 然后使用json.loads功能把返回的对象转换为json对象

  3. 最后从json格式数据中提取出我们自己需要的key和paraphrase对象值

elif choose == "翻译":
    selecte3 = option_menu(None, ["单词翻译"],
                           icons=['house'],
                           menu_icon="cast", default_index=0, orientation="horizontal")
    if selecte3 == "单词翻译":
        st.header("中英单词互翻神器")
        st.info("要翻译中文单词,请输入中文,会返回对应英文;\n\n\n\n要翻译英文单词,请输入英文,会返回对应中文;")

        danci = st.text_input("请输入要查找的中文单词或英文单词")
        fanhui = requests.get("http://dict.iciba.com/dictionary/word/suggestion?word=" + danci)
        data1 = fanhui.text
        data2 = json.loads(data1)
        for i in range(len(data2["message"])):
            st.write(data2["message"][i]["key"], data2["message"][i]["paraphrase"])

        # 隐藏按钮及底部链接
        sysmenu = '''
        <style>
        #MainMenu {visibility:hidden;}
        footer {visibility:hidden;}
        '''
        st.markdown(sysmenu, unsafe_allow_html=True)

结合Javascript

1a3261694a963bb935eb52b935e3bb75.png

此案例使用streamlit.components.v1组件直接调用我们写好的javascript代码:

elif choose == "其他应用":
    selecte5 = option_menu(None, ["Javascript", "嵌入PDF"],
                           icons=['house', "list-task"],
                           menu_icon="cast", default_index=0, orientation="horizontal")

    if selecte5 == "Javascript":
        from streamlit.components.v1 import html
        html("""
                <script>
        function startTime(){
            var today=new Date();
            var current_time=today.toLocaleString();
            document.getElementById('txt').innerHTML="当前时间为:"+current_time;
            t=setTimeout(function(){startTime()},500);
        }
        function checkTime(i){
            if (i<10){
                i="0" + i;
            }
            return i;
        }
        </script>
        </head>
        <body onload="startTime()">
        <p id="txt" style="color:blue"></p>
            """)

浏览PDF

f453a47917e42b89facd85798cf62fda.png

Img

嵌入PDF文档的原理是,使用base64模块对PDF文档进行了编解码操作,然后使用html中的embed方法,把编解码后的信息进行显示

elif selecte5 == "嵌入PDF":
        import base64
        uploaded_file = st.file_uploader("上传pdf", type=["pdf"])
        if uploaded_file is not None:
            base64_pdf = base64.b64encode(uploaded_file.read()).decode('utf-8')
            pdf_display = f'<embed src="data:application/pdf;base64,{base64_pdf}" width="100%" height="1000" type="application/pdf">'
            st.markdown(pdf_display, unsafe_allow_html=True)

交流群

时隔2个月,摸鱼学习交流群再次限时开放了。

7475211dcac66acebf772fe04c51fb52.png

Python技术交流群(技术交流、摸鱼、白嫖课程为主)又不定时开放了,感兴趣的朋友,可以在下方公号内回复:666,即可进入,一起 100 天计划!

老规矩,酱友们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!

b82b42466c18f456807cd71ad7ffce1b.gif

神秘礼包获取方式

识别下方公众号,回复:1024

cc3d5b1c0f519dd7f24ee2d181423364.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ MFC 学习笔记+小型通讯录系统实现

MFC 最详细入门教程 [MFC常用函数总结]&#xff08;https://www.cnblogs.com/jiu0821/p/4606639.html&#xff09; [C & MFC]https://www.cnblogs.com/gaohongchen01/p/4176963.html [MFC入门&#xff08;一&#xff09;]https://www.cnblogs.com/yangyuqing/p/10283641…

FPGA远程更新/远程调试的一种简单方法

之前介绍过一种远程&#xff08;无线&#xff09;更新的方式&#xff0c;详见《起飞&#xff01;通过无线WIFI下载调试FPGA》&#xff0c;这种方式缺点有两个&#xff1a;一是速度较慢&#xff1b;二是我们的设备中需要增加一个无线设备&#xff0c;增加成本的同时增加了暴露的…

DOUBLETROUBLE: 1实战演练

文章目录 DOUBLETROUBLE: 1实战演练一、前期准备1、相关信息 二、信息收集1、nmap探测目标靶机端口2、扫描目标网址目录3、访问网站&#xff0c;发现secret下有个图片4、将图片下载5、查看图片所含内容6、破解密码并查看7、登陆邮箱8、创建反弹shell9、上传反弹shell10、监听11…

【Android工具】更新小米电视安装小白云盘观看阿里网盘视频资源方法

微信关注公众号 “DLGG创客DIY” 设为“星标”&#xff0c;重磅干货&#xff0c;第一时间送达。 之前分享过两篇关于安卓电视看网盘资源的方法&#xff1a; 【Android工具】安卓TV云存储观影工具测试正常&#xff0c;安卓电视看电影方案小结 【Android工具】更新安卓TV云存储观…

E往无前 | 腾讯云大数据 ElasticSearch 高级功能:Cross Cluster Replication实战

前言 Elasticsearch在platinum版本中&#xff0c;推出了Cross Cluster Replication特性&#xff08;以下简称CCR&#xff09;&#xff0c;也即跨集群远程复制。 该特性可以解决两类问题&#xff1a; 1&#xff0c;数据迁移&#xff1b; 2&#xff0c;异地备份。 本文以实战为主…

深入解读 Flink 1.17

摘要&#xff1a;本文整理自阿里云技术专家&#xff0c;Apache Flink PMC Member & Committer、Flink CDC Maintainer 徐榜江(雪尽) 在深入解读 Flink 1.17 Meetup 的分享。内容主要分为四个部分&#xff1a; 1. Flink 1.17 Overview 2. Flink 1.17 Overall Story 3. Fli…

这可能是最全面的Java学习路线了

大家好&#xff0c;我是大彬~ 我本科学的不是计算机&#xff0c;大四开始自学Java&#xff0c;并且拿到了几个互联网中大厂的offer。在学习Java这方面还是比较有经验的&#xff0c;下面我来分享下我整理的Java自学路线。 在这里也提醒学弟学妹们&#xff0c;要尽早确定以后的…

自动化Jenkins管理?使用python-jenkins管理Jenkins

点击上方蓝字⭐️关注“DevOps云学堂”&#xff0c;接收最新技术实践 今天是「DevOps云学堂」与你共同进步的第 26 天 如果这篇文章对您有帮助&#xff0c;欢迎转发点赞分享。您的关注是我持续分享的动力&#xff01; 简介 本次我们将要学习JenkinsAPI接口&#xff0c;我们先用…

Scrapy数据爬取,Django+PyEcharts实现可视化大屏(附源码)

大家好&#xff0c;我是小F&#xff5e; 最近有个小伙伴问我有没有基于Django的可视化大屏&#xff0c;小F就顺手找了一下。 于是便在GitHub上发现了一个不错的实战项目&#xff0c;基于qunaer长沙景点数据。 还是作者最近几天刚更新的&#xff0c;保真~ 项目地址&#xff1a; …

Rust每日一练(Leetday0010) 子串下标、两数相除、串联子串

目录 28. 找出字符串中第一个匹配项的下标 Find-the-index-of-the-first-occurrence-in-a-string &#x1f31f;&#x1f31f; 29. 两数相除 Divide Two Integers &#x1f31f;&#x1f31f; 30. 串联所有单词的子串 Substring-with-concatenation-of-all-words &#x…

FL Studio 21最新中文版本发布!原生插件、UI、操作优化全面更新!

FL Studio 21现已推出&#xff0c;提供更快、更精确的音频编辑&#xff0c;升级后的DAW为用户提供了更多的内容发现和改进的界面。 Image-Line发布了FL Studio 21&#xff0c;称其可以实现更快、更精确的音频编辑&#xff0c;以及对整个DAW的更多控制。 期待已久的DAW升级为用…

网络安全的学习路线是怎么样的?

在众多高大上的学习路线指导中&#xff0c;尝试做一股清流&#xff0c;把要讲清楚的都讲清楚&#xff0c;该学些什么&#xff0c;学到哪个程度进入到下一阶段的学习这些才是最重要的。 在学习之前首先要做好学习的系统规划&#xff1a; 1.目前市场需求主流的岗位里&#xff0…

苏州狮山广场能耗管理系统

摘要&#xff1a;随着社会生活水平的提高&#xff0c;经济的繁荣发展&#xff0c;人们对能源的需求逐渐增长&#xff0c;由此带来的能源危机日益严重。商场如何实时的了解、分析和控制商场的能源消耗已成为需要解决的迫在眉睫的难题。传统的能源消耗智能以月/季度/年为周期进行…

springboot+jsp+java高校实验室设备管理系统

本次程序软件的开发的目的就是让使用者可以通过使用该软件提高信息数据的管理效率&#xff0c;同时该程序软件也需要针对不同的操作用户设置对应的功能&#xff0c;因此&#xff0c;此程序的操作流程应该尽量与用户日常操作软件的行为习惯相贴合&#xff0c;另外&#xff0c;程…

国内开源的中文Docker管理工具,界面清爽,赞!

文章目录 一、docker.ui1、简介2、docker.ui安装3、启动效果 一、docker.ui 1、简介 一个用于docker容器和docker集群的可视化管理工具&#xff0c;您可以浏览和维护docker单节点或集群节点worker和Manager。 2、docker.ui安装 安装命令如下&#xff1a; docker run --name…

Selinux 安全上下文与端口控制

Selinux Selinux 的全称是Security Enhance Linux&#xff0c;就是安全加强的Linux。在Selinux之前root账号能够任意的访问所有文档和服务在selinux中&#xff0c;访问控制属性叫做安全上下文&#xff0c;所有客体&#xff08;文件、进程间通讯通道、套接字、网络主机等&#…

创客匠人CEO蒋洪波:抓住抓住市场需求发展

拍手访谈创客匠人CEO蒋洪波&#xff1a;创客匠人是如何开始的&#xff1f;未来又将如何发展&#xff1f; 一、创客匠人知识付费是如何开始的&#xff1f; 1.从爱好出发 我本人喜欢做产品&#xff0c;或者说是喜欢研究产品。 得益于在研发产品上的一些天赋&#xff0c;我们产品…

第五十一天学习记录:C语言进阶:枚举和联合(共用体)

枚举顾名思义就是一一列举。 枚举的优点 我们可以使用#define定义常量&#xff0c;为什么非要使用枚举&#xff1f; 1、增加代码的可读性和可维护性 2、和#define定义的标识符比较枚举有类型检查&#xff0c;更加严谨 3、防止了命名污染&#xff08;封装&#xff09; 4、便于…

【Simulink】示波器图形数据导入Matlab重新绘图(论文)

版本&#xff1a;Matlab2019b 效果 示波器波形图片&#xff1a; 黑色背景&#xff0c;而且坐标轴字体较小&#xff0c;不方便修改&#xff0c;不能直接用在论文上面 对比 Matlab 绘图&#xff1a; 接下来介绍如何设置~ Simulink 设置 选择需要导入的示波器数据 点击 Vi…

termux-x11教程

小粉丝已经求稿两个星期了&#xff0c;不写是不行了。 termux-x11 是Termux的一个图形化项目&#xff0c;官方是这么介绍的。 A Termux add-on app providing Android frontend for Xwayland.安装工具 我们需要在Termux和安卓系统上安装工具以成功的运行程序。 x11-repo&am…