当前位置: 首页 > news >正文

python实现简单的UI交互

请添加图片描述

文章目录

  • 1. 基础打印 + 覆盖同一行
  • 2. 多行动画效果
  • 3. 彩色文本(Windows/macOS/Linux)
  • 4. 输入交互
  • 5. 异步输入与非阻塞显示
  • 6. 高级控制台 UI 库


可以通过控制台打印实现简单的「伪UI交互」,尤其适合展示进度、动态文本或轻量级状态反馈。以下是几种常见方法及示例:


1. 基础打印 + 覆盖同一行

\r 实现覆盖当前行内容(无需换行),适合显示动态进度。

import time
import sysfor i in range(101):# \r 将光标移动到行首,覆盖之前的输出sys.stdout.write(f"\r进度: [{'=' * i}{' ' * (100 - i)}] {i}%")sys.stdout.flush()  # 立即刷新输出缓冲区time.sleep(0.05)
print("\n完成!")  # 换行结束

效果:
进度: [================================================== ] 50%


2. 多行动画效果

通过清屏或移动光标实现多行动态效果(需 os 模块支持)。

import time
import osdef clear_console():os.system('cls' if os.name == 'nt' else 'clear')while True:clear_console()print("=== 动态信息 ===")print("1. 当前任务: 数据处理中...")print("2. 进度: 75%")print("3. 剩余时间: 10秒")time.sleep(1)# 按 Ctrl+C 退出循环

3. 彩色文本(Windows/macOS/Linux)

使用 colorama 库(跨平台彩色输出)增强可读性。

# 安装库:pip install colorama
from colorama import Fore, Back, Style
import timeprint(Fore.GREEN + "开始处理...")
time.sleep(1)
print(Back.YELLOW + Fore.BLACK + "警告:内存占用过高!")
time.sleep(1)
print(Style.RESET_ALL + "操作完成。")  # 重置颜色

效果:
绿色文字 → 黄底黑字警告 → 重置后默认颜色。


4. 输入交互

通过 input() 获取用户输入,但会阻塞线程直到输入完成。

name = input("请输入你的名字: ")
print(f"你好, {name}!")

5. 异步输入与非阻塞显示

结合 threading 实现「边输入边显示进度」(需处理线程同步)。

import threading
import timedef background_task():for i in range(5):print(f"\r后台任务进度: {i+1}/5", end="")time.sleep(1)print("\r后台任务完成!")# 启动后台线程
thread = threading.Thread(target=background_task)
thread.start()# 主线程继续接收输入
name = input("请输入你的名字: ")
print(f"你好, {name}! 后台任务已结束。")

6. 高级控制台 UI 库

如果需要更复杂的交互(如菜单、表格),可使用专用库:
rich: 支持富文本、表格、进度条等(GitHub)

curses: 终端图形库(需手动处理布局)

使用 rich 示例:

# 安装库:pip install rich
from rich.progress import track
import timefor _ in track(range(100), description="处理中..."):time.sleep(0.05)

效果:
带进度条、描述文字和自动更新的控制台界面。


优缺点对比

方法优点缺点
基础打印覆盖无需任何库,兼容所有环境无法复杂布局,依赖回车覆盖
多行动画可展示更多信息需清屏操作,可能闪烁
彩色文本提升可读性Windows 需额外配置
输入交互简单直接阻塞线程,无法同时显示动态内容
rich 等库功能强大,界面美观需安装第三方库

适用场景
• 简单进度反馈:用 \r 覆盖或 rich.progress

• 命令行工具:用 input()print() 组合。

• 监控类脚本:多行动画 + 定时刷新。

• 需要美观输出:直接使用 richcolorama

如果需要真正的交互式 UI(如按钮、窗口),仍需使用 Tkinter/PyQt 等 GUI 框架。

相关文章:

python实现简单的UI交互

文章目录 1. 基础打印 覆盖同一行2. 多行动画效果3. 彩色文本(Windows/macOS/Linux)4. 输入交互5. 异步输入与非阻塞显示6. 高级控制台 UI 库 可以通过控制台打印实现简单的「伪UI交互」,尤其适合展示进度、动态文本或轻量级状态反馈。以下是…...

高频面试题:如何保证数据库和es数据一致性

背景 在实际项目开发中,我们经常将MySQL作为业务数据库,ES作为查询数据库,用来实现读写分离,缓解MySQL数据库的查询压力,应对海量数据的复杂查询,这其中有一个很重要的问题,就是如何实现MySQL数…...

CS001-7-hbao

HBAO https://zhuanlan.zhihu.com/p/348467142 HBAO(屏幕空间的环境光遮蔽) - 知乎 (zhihu.com) [摸着原神学图形]HBAO实现与优化 - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/367793439 Global Illumination_Horizon-Based Ambient Occlusion(HBAO)-CSDN博客 这个解…...

使用npm install或cnpm install报错解决

1.从git上拉了一个新vue项目npm install 报错如下 解决办法: 清除npm缓存 npm cache clean -force 2.阿里云镜像证书过期,报错如下 解决办法: 更换阿里云镜像地址 #原来的地址是:https://registry.npm.taobao.org/ cnpm confi…...

Electron Forge【实战】阿里百炼大模型 —— AI 聊天

获取 apiKey 登录并开通阿里云百炼 https://bailian.console.aliyun.com/#/home 新人有半年免费的使用福利,在模型详情中,可以查看剩余的免费额度 https://bailian.console.aliyun.com/?tabmodel#/model-market/detail/qwen-turbo 在下方链接中创建 ap…...

Vue3实现高仿word自定义颜色选择器组件(支持 v-model)

目录 Vue3实现高仿word自定义颜色选择器组件(支持 v-model)需求分析大致效果需求功能实现所需技术从UI哪里拿到主题颜色标准色进行子主组件的v-model实现子组件布局实现子组件样式实现子组件全部代码:父组件调用方式完结 Vue3实现高仿word自定…...

.NET中,const和readonly区别

在.NET中,const和readonly都用于定义不可变的值,但它们在行为和使用场景上有显著区别。以下是两者的详细对比: 初始化时机 • const ◦ 编译时常量,必须在声明时赋值。 ◦ 值在编译时确定,并被直接嵌入到IL代码中&…...

力扣-206.反转链表

题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 class Solution { public:ListNode* reverseList(ListNode* head) {//头插法ListNode *p head;headnullptr;ListNode *temp nullptr;while (p! nullptr){tempp;pp->next;tem…...

五一去荣昌吃卤鹅?基于Java和天地图的寻找荣昌卤鹅店实践

目录 前言 1、卤鹅哥与甲亢哥的爆火事件 2、荣昌卤鹅产业的空间分布 3、使用Java 和天地图进行产业挖掘 一、地名检索简介 1、地名检索功能 2、地名检索API介绍 二、荣昌卤鹅检索实践 1、数据获取流程 2、天地图API请求构建 3、参数构建及调用 4、结果生成及本地保存…...

力扣-160.相交链表

题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返…...

CSS Position 属性完全指南

CSS 中的 position 属性是布局的基础,它决定了元素在页面中的定位方式。理解各种定位值的行为和适用场景对于构建灵活、响应式的布局至关重要。 position 属性的五个主要值 1. static(默认值) 元素遵循正常的文档流不受 top, right, botto…...

热度上升,25西电机电工程学院(考研录取情况)

1、机电工程学院各个方向 2、机电工程学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、力学25年相较于24年下降35分,为255分 2、机械工程25年相较于24年下降15分,为320分 3、仪器科学与技术25年相较于24年上升35分,为…...

R7周:糖尿病预测模型优化探索

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、数据预处理 1.设置GPU import torch.nn.functional as F import torch.nn as nn import torch, torchvisiondevice torch.device("cuda"…...

使用Go语言实现轻量级消息队列

文章目录 一、引言1.1 消息队列的重要性1.2 为什么选择Go语言1.3 本文实现的轻量级消息队列特点 二、核心设计2.1 消息队列的基本概念2.1.1 消息类型定义2.1.2 消息结构设计 2.2 架构设计2.2.1 基于Go channel的实现方案2.2.2 单例模式的应用2.2.3 并发安全设计 2.3 消息发布与…...

QT窗口相关控件及其属性

widget,PushButton,lineEdit等都是基于QWidget延展出来的 并不是完整的窗口,而是作为窗口的一部分 真正的窗口是QMainWindow 菜单栏 Qt中的菜单栏是通过QMenuBar这个类来实现的,一个主窗口最多只有一个菜单栏,位于主…...

OceanBase 复合索引指南

一、 什么是复合索引,与单列索引的区别是什么 1.1 什么是复合索引 复合索引是指在数据库表中由两个或更多列共同构成的索引,也称多列索引。其独特之处在于,它并非仅针对单一列建立索引,而是对多个列的组合进行索引,从…...

蛋白质大语言模型ESM介绍

ESM(Evolutionary Scale Modeling)是 Meta AI Research 团队开发的一系列用于蛋白质的预训练语言模型。这些模型在蛋白质结构预测、功能预测和蛋白质设计等领域展现出了强大的能力。以下是对 ESM 的详细介绍: 核心特点 大规模预训练:基于大规模蛋白质序列数据进行无监督学…...

回归测试:保障软件质量的重要防线

在软件开发的生命周期中,变更无处不在——新功能添加、缺陷修复、性能优化或代码重构。但每一次变更都可能像投入平静水面的石子,引起意想不到的涟漪效应。这就是回归测试(Regression Testing)存在的意义,它是软件质量保障体系中不可或缺的一…...

51单片机中断

80C51 单片机的中断源及其默认优先级(从高到低): 优先级中断源中断号1️⃣外部中断 0 (INT0)IE0,编号 02️⃣定时器 0 (T0)TF0,编号 13️⃣外部中断 1 (INT…...

Ollama 常见命令速览:本地大模型管理指南

Ollama 常见命令速览:本地大模型管理指南 一、什么是 Ollama? Ollama 是一个轻量级工具,允许用户在本地快速部署和运行大型语言模型(LLM),如 Llama、DeepSeek、CodeLlama 等。其命令行工具设计简洁&#…...

LSPatch官方版:无Root Xposed框架,自由定制手机体验

在Android设备的自定义和优化过程中,Xposed框架一直是一个强大的工具。然而,许多用户因为Root操作的复杂性和风险而望而却步。今天,我们要介绍的 LSPatch官方版,就是这样一款基于LSPosed核心的无Root Xposed框架解决方案。它不仅提…...

星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。

星火燎原:大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星,凭借其卓越的性能和强大的功能&#xff0c…...

Spark-Streaming(三)

一. kafka和flume的整合 任务需求一:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台 1. 在flume/conf/目录下添加flume-kafka.conf文件 配置文件如下 2. 启动flume和kafka消费者 3. 传入数据 查看fl…...

深入了解C# List集合及两种常见排序算法:插入排序与堆排序

在C#中&#xff0c;List<T> 是一种常用的集合类型&#xff0c;它提供了对动态数组的灵活操作&#xff0c;能够方便地添加、删除和访问元素。而排序算法是计算机科学中非常重要的部分&#xff0c;插入排序和堆排序是两种经典的排序方法。本文将详细讲解C#中 List<T>…...

【软件设计师】模拟题三

以下是另外10道不重复的软考-软件设计师模拟试题&#xff0c;答案及解析统一放在最后&#xff1a; ​​试题部分​​ ​​在软件工程中&#xff0c;敏捷开发&#xff08;Agile Development&#xff09;的核心实践之一是&#xff1f;​​ A. 严格的文档编写 B. 基于里程碑的计划…...

什么是CN2专线?全面解析中国电信的高性能网络服务

一、CN2专线的定义 CN2专线&#xff08;China Telecom Next Carrier Network&#xff09;是中国电信推出的新一代高性能网络专线服务&#xff0c;旨在满足企业对高速、稳定、安全网络连接的深度需求。它基于优化的网络架构设计&#xff0c;通过分布式路由、多路径传输等技术&a…...

5.4 AgentLite:轻量级库,便于构建任务导向的LLM Agent系统

AgentLite 是一个轻量级、模块化设计的开源框架&#xff0c;专注于构建任务导向的基于大语言模型&#xff08;LLM&#xff09;的智能代理&#xff08;Agent&#xff09;系统。与其他功能丰富但较为复杂的框架&#xff08;如 LangChain 或 AutoGen&#xff09;相比&#xff0c;A…...

shell脚本3

for语句&#xff08;一种循环控制结构&#xff0c;用于遍历列表或者范围内的元素&#xff0c;并对每个元素执行一段代码语法格式 for 变量名 in 取值列表 do 命令序列 done 入门示例&#xff1a; for i in 1 2 3 4 5 6 # for i in {1..6} 或 for i in …...

Kafka Tool(Offset Explorer)国内下载: Kafka可视化连接工具

Kafka Tool&#xff08;现称为 Offset Explorer&#xff09;是一款专为 Apache Kafka 集群设计的可视化连接客户端工具&#xff0c;主要用于消息的可视化浏览、消费者偏移量的管理、主题的管理以及数据的实时监控。作为一款商用软件&#xff0c;它以其直观的用户界面和强大的功…...

【JAVA】高并发场景下,如何保证数据的一致性和系统的稳定性?

数据一致性 数据库事务&#xff1a;使用数据库的事务机制&#xff0c;确保一组数据的相关操作要么全部成功&#xff0c;要么全部失败&#xff0c;从而保证数据的一致性。例如&#xff0c;在转账操作中&#xff0c;涉及到转出账户扣款和转入账户加款两个操作&#xff0c;这两个…...

【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令

信号的悄然到来&#xff1a;当操作系统发出‘警告’时 一.信号1.1 基本概念1.2 产生信号方式1.2.1 键盘产生信号1.2.2 系统调用产生信号1.2.2.1 kill1.2.2.2 raise1.2.2.3 abort 1.2.3 调用系统命令1.2.4 异常1.2.5 软件条件产生信号1.2.5.1 pause1.2.5.2 alarm 二. 最后 信号的…...

统计服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息

文章目录 一、背景二、说明三、页面四、代码前端MonitorServiceProcessPage.vueMonitorServiceProcessTable.vueMonitorServiceProcessTableButton.vueaddMonitorTask.vueproductOperation.vueshowMonitorTask.vueMonitorSystemLog.vueMonitorTask.vueMonitorTaskLog.vueRealti…...

WSL 安装过程整理

WSL 安装过程整理 一、WSL 安装教程二、安装后小技巧1、安装位置2、常用命令 三、在 WSL2 中安装 perf&#xff1a; 一、WSL 安装教程 史上最全的WSL安装教程 WSL2 最新最全帮助小白一步步详细安装教程 在WSL2 root 和普通用户的切换 轻松搬迁&#xff01;教你如何将WSL从C盘迁…...

纯CSS吃豆人(JS仅控制进度)

一、效果展示 二、源码 html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Pac-Man SVG Demo…...

redis 数据类型新手练习系列——Hash类型

redis 数据类型 Redis 主要支持以下几种数据类型&#xff1a; &#xff08;1&#xff09;string&#xff08;字符串&#xff09;: 基本的数据存储单元&#xff0c;可以存储字符串、整数或者浮点数。 &#xff08;2&#xff09;hash&#xff08;哈希&#xff09;:一个键值对集…...

如何使用@KafkaListener实现从nacos中动态获取监听的topic

1、简介 对于经常需要变更kafka主题的场景&#xff0c;为了实现动态监听topic的功能&#xff0c;可以使用以下方式。 2、使用步骤 2.1、添加依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactI…...

区块链如何达成共识:PoW/PoS/DPoS的原理、争议与适用场景全解

引言 区块链技术的核心在于​​去中心化网络中的信任机制​​&#xff0c;而共识算法是实现这一目标的关键。不同的共识机制在效率、安全性、去中心化程度等方面各有取舍。本文将深入解析三种主流共识机制——​​工作量证明&#xff08;PoW&#xff09;​​、​​权益证明&am…...

Oracle for Linux安装和配置(11)——Oracle安装和配置

11.3. Oracle安装和配置 Linux上Oracle的安装及配置与Windows上差不多,只是安装软件的准备等有所不同,下面只对不同于Windows的部分进行较为详细的讲解,其他类似部分不再赘述。另外,无论选择使用虚机还是物理机,Oracle安装、配置和使用等方面几乎都是完全一样的。 11.3.…...

http协议详解附带c/c++服务器和客户端源码

http详解 代码部分HTTP请求结构示例HTTP客户端实现&#xff08;使用Linux系统调用&#xff09;简易HTTP服务器实现 深入解析HTTP协议&#xff1a;从基础到实践1. HTTP协议核心概念1.1 协议本质解读1.2 通信模型详解 2. 抓包分析实战2.1 Fiddler工具妙用2.2 报文结构拆解 3. 请求…...

JavaScript性能优化实战(5):数据结构与算法性能优化

JavaScript中常用数据结构性能对比 数据结构的选择对JavaScript应用的性能有着决定性的影响。不同的数据结构在不同操作上各有优劣,选择合适的数据结构能显著提升应用性能。本节将对JavaScript中常用的数据结构进行全面的性能对比分析。 基本数据结构时间复杂度概览 首先,…...

uniapp小程序开发入门01-快速搭建一个空白的项目并预览它

uniapp小程序开发入门01-快速搭建一个空白的项目并预览它&#xff01;由于近期有市场需求和计划&#xff0c;构建一套自己的小程序&#xff0c;所以再次带领大家系统的过一遍&#xff0c;如何使用uniapp程序快速构建一套完整的项目。今天是第一小节&#xff0c;带领大家快速构建…...

UR5 UR5e机器人URDF文件

URDF全称为Unified Robot Description Format,中文可以翻译为“统一机器人描述格式”。与计算机文件中的.txt文本格式、.jpg图像格式等类似,URDF是一种基于XML规范、用于描述机器人结构的格式。根据该格式的设计者所言,设计这一格式的目的在于提供一种尽可能通用(as genera…...

ubuntu20.04安装x11vnc远程桌面

x11vnc是一个VNC服务器, 安装后我们可以不依赖外部的显示设备, 通过网络远程登录ubuntu桌面。 安装x11vnc sudo apt-get install x11vnc 设置VNC登录密码 sudo x11vnc -storepasswd /etc/x11vnc.pwd 设置x11vnc在开机时自动启动 新建如下文件: sudo vi /lib/systemd/sys…...

AKM旭化成微电子全新推出能量收集IC“AP4413系列”

旭化成微电子开始批量生产用于环保发电的电荷控制集成电路&#xff01;优化充电电池的充放电&#xff0c;广泛应用于智能遥控器和蓝牙TMTag等设备。 01 概述 旭化成微电子株式会社&#xff08;AKM&#xff09;开发出面向小型二次电池&#xff08;充电电池&#xff09;的环境…...

机器人行业研究系列报告

新质生产力系列报告&#xff1a;2024年人形机器人核心场景发展洞察研究报告 具身机器人行业现状及未来趋势分析 2025 2025年人形机器人投资策略&#xff0c;量产元年&#xff0c;全球共振&#xff0c;百家争鸣 人形机器人行业深度报告&#xff08;一&#xff09;&#xff1a…...

利用JMeter代理服务器方式实现高效压测

前言 在当今快节奏的互联网时代&#xff0c;确保Web应用和服务能够在高负载下稳定运行变得至关重要。无论是电子商务平台、社交媒体网络还是在线教育服务&#xff0c;用户对网站响应速度和稳定性的期望从未如此之高。因此&#xff0c;性能测试不再是一个可选项&#xff0c;而是…...

NLP高频面试题(五十五)——DeepSeek系列概览与发展背景

大型模型浪潮背景 近年来,大型语言模型(Large Language Model, LLM)领域发展迅猛,从GPT-3等超大规模模型的崛起到ChatGPT的横空出世,再到GPT-4的问世,模型参数规模和训练数据量呈指数级增长。以GPT-3为例,参数高达1750亿,在570GB文本数据上训练,显示出模型规模、数据…...

2015-2023 各省 GDP 数据,用QuickBI 进行数据可视化——堆叠图!

嘿&#xff0c;数据爱好者们&#xff01;今天咱要来一场刺激的数据冒险&#xff0c;深入剖析全国各省的 GDP 数据&#xff0c;而且会借助强大的 QuickBI 工具&#xff0c;用超酷炫的堆叠图让这些数据 “活” 起来&#xff0c;带你一眼看清经济格局&#xff01; 地址&#xff1…...

MySQL优化(持续更新)笔记

一、insert优化 &#xff1a; 之前&#xff1a;项目通常是一条insert一条的执行&#xff0c;每一次都需要与MySQL进行建立连接进行网络传输&#xff0c;效率很低 现在&#xff1a; 1.- 批量插入&#xff08;一条sql就行&#xff0c;一次500-1000&#xff09; 可以与MyBatis…...

MySQL表的操作 -- 表的增删改查

目录 1. 表的创建2. 表的查看3. 表的修改4. 表的删除5. 总结 1. 表的创建 1.查看字符集及效验规则 2. 表的创建 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;创建用户表1 创建用…...