项目推荐:指针切换器

小编的inscode部署项目:割绳子游戏。

更多精彩内容见InsCode - 让你的灵感立刻落地~

介绍一下项目。

引言

在现代用户界面设计中,鼠标指针的样式和行为对用户体验有着重要的影响。传统的鼠标指针样式(如箭头、手形、等待图标等)已经广泛应用于各种应用程序中,但随着技术的发展和用户需求的多样化,越来越多的开发者开始探索和实现自定义鼠标指针,以提升应用的独特性和功能性。本文将详细介绍一个使用 Streamlit 创建的“超级增强版多功能鼠标指针更换器”项目,该项目不仅涵盖了常见的鼠标指针样式,还引入了多种自定义和非标准的指针类型,旨在为用户提供丰富的交互体验。

项目概述

项目背景

Streamlit 是一个用于快速创建数据应用的 Python 库,它允许开发者使用简单的 Python 代码创建复杂的 Web 应用。Streamlit 的优势在于其简洁的语法和强大的功能,使得开发者可以专注于业务逻辑,而无需关心底层的 Web 开发细节。在这个项目中,我们将利用 Streamlit 的这些特性,创建一个功能丰富、易于使用的鼠标指针更换器。

项目目标
  1. 提供多种鼠标指针样式:包括常见的标准指针类型和自定义的非标准指针类型。
  2. 用户友好的界面:通过按钮和文字提示,让用户轻松切换不同的鼠标指针样式。
  3. 扩展性和灵活性:支持添加更多的指针类型,以便未来扩展。
  4. 教育意义:通过实际项目,展示如何使用 Streamlit 和 CSS 实现复杂的 UI 功能。

代码详解

导入库
 

python

import streamlit as st

首先,我们导入 Streamlit 库。Streamlit 是一个强大的工具,用于创建数据应用和 Web 界面。通过导入 st,我们可以使用 Streamlit 提供的各种功能。

定义更改鼠标指针的函数
 

python

def change_cursor(cursor_type): st.markdown(f'<style>body {{ cursor: {cursor_type}; }}</style>', unsafe_allow_html=True)

change_cursor 函数用于更改页面的鼠标指针样式。它接受一个参数 cursor_type,表示要设置的鼠标指针类型。通过 st.markdown 函数,我们可以插入包含 CSS 样式的 HTML 代码,从而动态地更改鼠标指针。unsafe_allow_html=True 参数允许插入未转义的 HTML 内容,这对于设置 CSS 样式是必需的。

定义恢复默认指针的函数
 

python

def restore_default_cursor(): st.markdown('<style>body { cursor: auto; }</style>', unsafe_allow_html=True)

restore_default_cursor 函数用于恢复页面的默认鼠标指针样式。它通过设置 cursor: auto; 来恢复默认的箭头指针。

创建 Streamlit 应用
 

python

st.title("超级增强版多功能鼠标指针更换器")

使用 st.title 设置应用的标题,让用户一目了然地知道这是一个鼠标指针更换器。

新增五种指针类型
 

python

if st.button("更改为禁止操作"): change_cursor("not-allowed") st.write("鼠标指针已更改为禁止操作状态。") if st.button("垂直文本编辑"): change_cursor("vertical-text") st.write("鼠标指针已更改为垂直文本编辑模式。") if st.button("细胞选择(用于电子表格)"): change_cursor("cell") st.write("模拟为电子表格中的单元格选择状态。") if st.button("喷枪模式"): change_cursor("spraypaint") st.write("模拟喷枪模式,常用于绘图应用。") if st.button("游戏控制器(示例)"): # 非标准类型 change_cursor("url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGNpcmNsZSBjeD0iMTAiIGN5PSIxMCIgcj0iNSIvPjxnIGlkPSJDaGFuZ2VNYXNrIj48cGF0aCBkPSJNMCAxMUgyNEwxOCAxMEgyNEExIDEyIDEwIDE4IDExIDE4WiIgc3Ryb2tlPSIjMDAzMDMwIiBzdHJva2Utd2lkdGg9IjEuMCIvPjwvZz48L3N2Zz4=)") st.write("模拟游戏控制器指针,非标准类型仅供参考。")

这里我们新增了五种鼠标指针类型,每个类型都对应一个按钮。当用户点击按钮时,调用 change_cursor 函数更改鼠标指针,并使用 st.write 显示一条消息,告知用户当前的鼠标指针状态。

  • 禁止操作:使用 not-allowed 指针,表示当前操作被禁止。
  • 垂直文本编辑:使用 vertical-text 指针,表示垂直文本编辑模式。
  • 细胞选择:使用 cell 指针,模拟电子表格中的单元格选择状态。
  • 喷枪模式:使用 spraypaint 指针,常用于绘图应用。
  • 游戏控制器:使用自定义的 SVG 图像作为指针,模拟游戏控制器。这里使用了 Base64 编码的 SVG 数据。
保留原有和新增功能
 

python

if st.button("更改为忙碌(wait)"): change_cursor("wait") st.write("鼠标指针已更改为忙碌状态。") if st.button("更改为十字光标(crosshair)"): change_cursor("crosshair") st.write("鼠标指针已更改为十字光标。") if st.button("更改为帮助(help)"): change_cursor("help") st.write("鼠标指针已更改为帮助标志。") if st.button("更改为移动(move)"): change_cursor("move") st.write("鼠标指针已更改为移动图标。") if st.button("更改为链接(link)"): change_cursor("link") st.write("鼠标指针已更改为链接样式。") if st.button("更改为抓手(grab)"): change_cursor("grab") st.write("鼠标指针已更改为抓手状态,适合拖拽操作。")

这里保留了一些常见的鼠标指针类型,并为每个类型添加了一个按钮。当用户点击按钮时,调用 change_cursor 函数更改鼠标指针,并使用 st.write 显示一条消息,告知用户当前的鼠标指针状态。

  • 忙碌:使用 wait 指针,表示系统正在忙于处理某个任务。
  • 十字光标:使用 crosshair 指针,常用于绘图和图像编辑。
  • 帮助:使用 help 指针,表示用户可以获取帮助信息。
  • 移动:使用 move 指针,表示用户可以拖动对象。
  • 链接:使用 link 指针,表示用户可以点击链接。
  • 抓手:使用 grab 指针,表示用户可以抓取和拖动对象。
自定义或不标准的鼠标指针类型展示
 

python

if st.button("模拟进行中(progress,非标准)"): change_cursor("progress") # 虽然非标准,但用于演示 st.write("模拟鼠标指针更改为进行中的状态。")

这里添加了一个非标准的鼠标指针类型 progress,虽然这不是一个标准的 CSS 指针类型,但可以用于演示目的。当用户点击按钮时,调用 change_cursor 函数更改鼠标指针,并使用 st.write 显示一条消息,告知用户当前的鼠标指针状态。

恢复默认鼠标指针
 

python

if st.button("恢复默认鼠标指针"): restore_default_cursor() st.write("鼠标指针已恢复为默认状态。")

最后,添加一个按钮用于恢复默认的鼠标指针。当用户点击按钮时,调用 restore_default_cursor 函数恢复默认指针,并使用 st.write 显示一条消息,告知用户当前的鼠标指针状态。

项目运行

启动应用

在终端中运行以下命令来启动 Streamlit 应用:

 

sh

streamlit run mouse_pointer_changer.py

打开浏览器并访问显示的 URL(通常是 http://localhost:8501),你应该能看到一个简单的 Streamlit 应用,点击按钮可以更改和恢复鼠标指针。

项目扩展

添加更多指针类型

你可以根据需要添加更多的鼠标指针类型。只需在代码中添加新的按钮,并调用 change_cursor 函数即可。例如:

 

python

if st.button("更改为复制(copy)"): change_cursor("copy") st.write("鼠标指针已更改为复制状态。")

支持自定义指针文件

如果你有自定义的指针文件(如 .cur 或 .png),可以将其上传到项目目录中,并在 change_cursor 函数中使用 url 属性引用这些文件。例如:

 

python

if st.button("更改为自定义指针"): change_cursor("url(path/to/your/custom_cursor.cur), auto") st.write("鼠标指针已更改为自定义指针。")

结论

通过这个项目,我们展示了如何使用 Streamlit 和 CSS 创建一个功能丰富的鼠标指针更换器。这个项目不仅涵盖了常见的标准指针类型,还引入了多种自定义和非标准的指针类型,为用户提供丰富的交互体验。通过简单的 Python 代码,我们可以轻松实现复杂的 UI 功能,这正是 Streamlit 的强大之处。希望这个项目能为你的开发工作带来灵感,帮助你创建更多有趣和实用的应用。

运行截图。。。

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

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

相关文章

D-ID 推出能模仿用户的头部动作以及实时互动的 AI 头像

D-ID 宣布推出两种新型 AI 头像 — — Express 和 Premium&#xff0c;旨在提升内容创作的灵活性和人性化。这些头像将为企业在营销、销售和客户支持等领域的视频制作提供便利。用户只需少量文本输入和视觉数据&#xff0c;即可生成更自然的商业视频。 Express 头像可以通过约一…

【C++系列】-----------内存管理

c内存管理&#xff08;涉及&#xff1a;数据在内存中的分布、new和delete使用、动态内存管理等&#xff09; 文章目录 c内存管理&#xff08;涉及&#xff1a;数据在内存中的分布、new和delete使用、动态内存管理等&#xff09;前言一、C/C内存分布二、C中动态内存管理2.1、 ne…

SpringBoot框架:作业管理系统构建之道

摘 要 使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的作业管理系统有管…

Linux字体更新 使用中文字体

问题描述&#xff0c;处理之前&#xff0c;中文乱码 处理后的结果 压缩需要上传的字体&#xff1a; 上传到LInux的字体目录&#xff0c;上传后解压出来 刷新字体&#xff1a; fc-cache -fv 测试是否正常 fc-list | grep "FontName"如果还不行 可以在代码里面指定字…

【书生.浦语实战营】——入门岛

【书生.浦语实战营】——入门岛_第一关_Linux基础 任务分布1. 本地vscode远程连接并进行端口映射端口映射What——何为端口映射How——怎么进行端口映射 2. Linux基础命令touch &#xff1a;创建文件mkdir &#xff1a;创建目录cd:进入 退出 目录pwd :确定当前所在目录cat:可以…

VirtualBox 解决虚拟机Cable Unplugged 无法上网问题

问题描述 VirtualBox 中的虚拟机无法上网&#xff0c;在虚拟机中查看网络设置显示 Cable Unplugged。 解决方案 选择VirtualBox 上方任务栏的控制->设置->网络&#xff0c;勾选接入网线即可解决。

win10下MMSegmentation自定义数据集

下载1.2.1版本: Releases open-mmlab/mmsegmentation GitHub 安装环境 本地torch环境为1.9.1 pip install -U openmim mim install mmengine mim install "mmcv>=2.0.0" 报mmcv版本不匹配的问题,形如:MMCV==X.X.X is used but incompatible. Please inst…

CSS网格布局

前言 希望元素按照网格的方式进行布局&#xff0c;最简单的方式就是利用网格布局&#xff0c;如图所示&#xff1a; 网格布局 设置网格布局的核心属性&#xff1a; ① display: grid 设置容器为网格布局容器&#xff08;如果希望设置行内的网格容器&#xff0c;可以设置disp…

童年的玩具:燕麦时钟

也不知道是谁传下来的&#xff0c;燕麦时钟。 燕麦是野生的&#xff0c;通常在麦地里面的都被拔掉&#xff0c;但是土埂上面的还幸存下来。 这个燕麦成熟后&#xff0c;上面有个麦芒由直的变弯&#xff0c;越是90度&#xff0c;越成熟。 选一根90度的成熟麦芒。把下部插入一团…

如何在BSV区块链上实现可验证AI

​​发表时间&#xff1a;2024年10月2日 nChain的顶尖专家们已经找到并成功测试了一种方法&#xff1a;通过区块链技术来验证AI&#xff08;人工智能&#xff09;系统的输出结果。这种方法可以确保AI模型既按照规范运行&#xff0c;避免严重错误&#xff0c;遵守诸如公平、透明…

2024年还有多少人在使用PHP?

根据W3Techs的最新数据&#xff0c;2024年PHP仍然支持76.5%的网站&#xff0c;这一数字在一年内下降不到1%&#xff08;截至2023年为77.3%&#xff09;。 尽管这一数字有所下降&#xff0c;但这表明PHP仍然是Web开发中非常流行的语言。 根据JetBrains的调查&#xff0c;在过去…

在这里游玩和创造,见证实时互动和 AI 的融合爆发丨年末场 RTE Open Day@RTE2024 回顾

RTE2024 第十届实时互联网大会上周末在北京圆满结束了&#xff0c;不知道大家体验交流得如何&#xff1f;可能是因为本来入秋的北京悄然升温&#xff0c;又或者是那两天的观众都很热情&#xff0c;25-26 号的活动现场特别像是一场夏天的聚会。 RTE Open Day 马不停蹄来到了第五…

智能体联手微信,打造24小时在线的全能AI机器人,除了聊天,还能接商单

最近在我们的智能体学习群里&#xff0c;微信AI机器人成了小明星&#xff0c;它功能丰富&#xff0c;机智幽默&#xff0c;成为了大家的心头好&#x1f617; 比如&#xff0c;它会非常热情的欢迎新入群的小伙伴&#xff0c;并且能够很机智的将小伙伴的名字巧妙地融入到欢迎词中…

采购退料单集成方案:从旺店通到金蝶云的API实现

14-采购退料单集成方案&#xff1a;旺店通旗舰奇门数据集成到金蝶云星空 在企业的供应链管理中&#xff0c;采购退料单的高效处理至关重要。为了实现这一目标&#xff0c;我们采用了轻易云数据集成平台&#xff0c;将旺店通旗舰奇门的数据无缝对接到金蝶云星空。本次分享的案例…

MyBatis的高级映射及延迟加载

多对一&#xff1a; 多种方式&#xff0c;常见的包括三种&#xff1a; 第一种方式&#xff1a;一条SQL语句&#xff0c;级联属性映射。 第二种方式&#xff1a;一条SQL语句&#xff0c;association。 第三种方式&#xff1a;两条SQL语句&#xff0c;分步查询。&#xff08;这…

bugku中web题-source

Web安全解题基础三件套思路 信息收集与目录扫描 御剑扫描&#xff1a;探测网站目录结构&#xff0c;找潜在可访问路径&#xff0c;如管理员后台等目录。dirsearch扫描后台目录&#xff1a;配置参数后扫描&#xff0c;分析返回有意义状态码的目录&#xff0c;可能包含后台管理界…

Java中String的length与Oracle数据库中VARCHAR2实际存储长度不一致的问题

目录 一、根本原因 二、解决方案 一、根本原因 Oracle数据库新增数据的时候报如下错误&#xff1a; 先给大家看个小案例&#xff0c;这样更好去理解&#xff0c;下面是一段测试代码&#xff1a; 这里面我分别列举了三种字符串&#xff0c;中文&#xff0c;英文和数字以及两种…

shodan6-7---清风

shodan6-7 1.shodan网页版 以cve-2019-0708漏洞指纹特征为例 "\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"在这里插入图片描述 搜索命令参考 https://www.shodan.io/search/filters这个网页中有搜索关键词 对指定网址进行监控&#xff0c;这里可以对ip进行扫描&…

Spring5学习记录(四)声明式事务管理

Spring5学习记录&#xff08;四&#xff09;声明式事务管理 一、事务管理1、事务四个特性ACID2、事务的两种方式 二、基于注解实现声明式事务管理1、配置xml文件2、添加事务注解 Transactional 三、声明式事务管理的参数配置1、propagation&#xff1a;事务传播行为2、isolat…

Linux上python离线安装教程

一. 安装Python 1. 下载python离线包 安装包下载地址&#xff1a;https://www.python.org/downloads/source/ 我下载的是Python 3.10.14 下面是linux服务器上的部署过程 2. 系统更新 sudo yum update -y 3. 安装必要的依赖项 sudo yum groupinstall “Development Tools” -y…