python+streamlit+sqlite+弹窗的实例。

完全自已查资料写的,年龄大了,记性差了,都放在网上吧!喜欢的随手点个赞,谢谢!

import streamlit as st

import sqlite3

from sqlite3 import Connection

from contextlib import closing

URI_SQLITE_DB = "dbrag.db"


 

def main():

    st.title("混沌知识库")

    conn = get_connection(URI_SQLITE_DB)

    init_db_workarea(conn)

    init_db_worklist(conn)

    build_sidebar(conn)

#查询数据库中的表名

def get_tables():

    with get_connection() as conn:

        return [table for table in conn.execute(

            "SELECT name FROM sqlite_master WHERE type='table'"

        ).fetchall()]

#执行sql操作

def insert_workarea(conn: Connection,workareaname):

    conn.execute('''

        INSERT INTO workarea (area_name) VALUES (?)

        ''',(workareaname,))

    conn.commit()

# 创建工作区表

def init_db_workarea(conn: Connection):

    conn.execute(

        """CREATE TABLE IF NOT EXISTS workarea

            (

                area_id INTEGER PRIMARY KEY,

                area_name TEXT NOT NULL

            );"""

    )

    conn.commit()


 

# 创建工作区分类表(带外键关联)

def init_db_worklist(conn: Connection):

    conn.execute(

        """CREATE TABLE IF NOT EXISTS worklist

            (

                list_id INTEGER PRIMARY KEY,

                area_id INTEGER,

                list_name TEXT,

                FOREIGN KEY(area_id) REFERENCES workarea(area_id)

            );"""

    )

    conn.commit()

# 创建数据库连接

@st.cache_resource(hash_funcs={Connection: id})

def get_connection(path: str):

    return sqlite3.connect(path, check_same_thread=False)





 

def build_sidebar(conn):

    st.sidebar.subheader("系统功能导航", divider="rainbow")

    #新建工作区的button

    if 'button_new' not in st.session_state:

        st.session_state.button_new = False

    def click_button_new():

        st.session_state.button_new = not st.session_state.button_new

    st.sidebar.button('新建工作区', on_click=click_button_new,key="button_new_workarea",use_container_width=True)

    def click_button_close():

        st.session_state.button_new =False

    # 初始化输入内容的session_state

    if 'input_value' not in st.session_state:

        st.session_state.input_value = ''

    @st.dialog("提示")

    def message_dialog(msgstring):

        st.write(f"{msgstring}!")

        if st.button("关闭"):

                st.rerun()

    def click_button_save():

        if not input_val.strip():

            message_dialog("没有输入工作区名称!")

            st.session_state.button_new=True

        else:

            insert_workarea(conn,input_val)

            st.session_state.input_value=input_val

            message_dialog(input_val+" 保存成功!")

            st.session_state.button_new=False

    if st.session_state.button_new:

        # 文本输入组件

        input_val=st.sidebar.text_input(label='请输入工作区的名称:',key='workareaname',placeholder='请输入工作区的名称')

        left,right = st.sidebar.columns(2, vertical_alignment="center")

        left.button("保存", on_click=click_button_save,key="button_save", use_container_width=True)

        right.button("关闭", on_click=click_button_close,key="button_close",use_container_width=True)

if __name__ == "__main__":

    main()

<think>好的,我现在需要帮用户找到关于Streamlit网站的示例或教程。首先,用户提到了几个引用,我需要仔细看看这些引用里的内容是否相关。引用[1]到[4]都是关于Streamlit的不同项目教程,比如Timeline组件、Elements库、基础使用教程和LLM示例项目。这些应该都是用户需要的资源。 接下来,我需要检查这些引用中的信息是否准确,并根据用户的要求生成相关问题。用户希望回答结构清晰,分步骤解决,所以应该先列出可用的教程和示例项目,然后提供安装和使用步骤,再给出参考链接。同时,要确保所有数学表达式正确使用LaTeX格式,不过这个问题里可能用不到数学公式,但还是要留意是否有需要的地方。 然后,用户要求生成相关问题。我需要根据提供的引用内容,提出与Streamlit教程、组件使用、安装方法以及实际应用相关的问题。比如,如何安装特定组件,不同项目的用途,或者如何结合其他技术使用Streamlit。 另外,要注意引用标识的添加,每个引用的末尾都要自然地加上对应的标记。例如,提到Streamlit Timeline项目时,末尾加上[^1]。同时,确保回答使用中文,结构清晰,帮助用户逐步找到他们需要的资源。 最后,检查是否符合系统级指令的要求,比如行内公式是否正确,独立公式是否单独成段,虽然这里可能用不到,但还是要确认。确保LaTeX语法正确,回答真实可靠,引用准确。</think>### Streamlit 示例与教程整理 #### 1. 官方基础教程 Streamlit 是一个快速构建数据应用的 Python 框架,其官方文档提供完整教程: - 核心功能:通过 $st.write()$ 等API快速生成交互组件 - 数据可视化:支持 Matplotlib/Plotly 等库 - 部署流程:支持一键部署到 Streamlit Cloud[^3] 推荐入门代码示例: ```python import streamlit as st st.title("我的第一个Streamlit应用") user_input = st.text_input("请输入内容") st.write("您输入的是:", user_input) ``` #### 2. 扩展组件教程 (1)**Timeline 组件** 通过 streamlit-timeline 库可集成 Knightlab 时间轴: ```python from streamlit_timeline import timeline timeline_data = [...] # 时间轴数据 timeline(timeline_data, height=500) ``` 项目地址见[^1] (2)**Elements 组件库** 提供富文本编辑器、PDF查看器等高级组件: ```python from streamlit_elements import editor, media editor.create() # 创建文本编辑器 media.display_pdf("doc.pdf") ``` 安装命令:$pip install streamlit-elements$[^2] #### 3. LLM 应用示例 llm-examples 项目展示大型语言模型集成方案: - 聊天机器人界面开发 - 文本生成功能实现 - 模型推理优化技巧 项目地址见[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值