将带有链接的图片排列成一行 streamlit

Arrange pictures with links in a row streamlit

我有几个图标要排列在应用程序的末尾。以至于当我点击图片的时候,我被调到了一个link。我应该怎么做?

到目前为止,我只是通过st.markdown.but添加了这个实现,它们是垂直排列的,因为我每次写 markdown 时都会添加一个新项目。

您可以使用 HTML 在 streamlit 中创建自定义组件。也许您可以创建一个社交媒体组件。

创建文件my_component.html


<html>
    <head>
        <style>
            .body {
                height: 64px;
            }
            .parent {
                width: 100%;
                height: auto;
                display: flex;
                justify-content: center;
            }

            .child {
                margin: 5px;
                height: 32px;
                width: 32px;
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <a class = "child" href="https://www.google.com"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/1200px-Google_%22G%22_Logo.svg.png" alt="alt" style="width:32px;height:32px;"></a>
            <a class = "child" href="https://wwww.reddit.com"><img src="https://www.redditinc.com/assets/images/site/reddit-logo.png" alt="alt" style="width:32px;height:32px;"></a>
            <a class = "child" href="https://wwww.facebook.com"><img src="https://facebookbrand.com/wp-content/uploads/2019/04/f_logo_RGB-Hex-Blue_512.png?w=512&h=512" alt="alt" style="width:32px;height:32px;"></a>
          </div>      
    </body>
    </html>

我添加了 3 个链接,分别指向 google、reddit 和 facebook。添加或编辑这些自定义内容。

在 streamlit 文件中,您可以使用组件库将 HTML 文件导入为组件。我分享的实现是一个非常简化的版本。

import streamlit as st
import streamlit.components.v1 as components

HtmlFile = open("my_component.html", 'r', encoding='utf-8')
source_code = HtmlFile.read() 
print(source_code)

st.text("Navbar Component")
components.html(source_code)

它有点基础,但会产生类似这样的结果。