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 框架。

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

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

相关文章

AI与思维模型【77】——PDCA思维模型

一、定义 PDCA思维模型是一种用于持续改进和优化工作流程、项目实施以及问题解决的科学管理方法。它由四个英文字母组成,分别代表计划(Plan)、执行(Do)、检查(Check)和处理(Act&…

10天学会嵌入式技术之51单片机-day-3

第九章 独立按键 按键的作用相当于一个开关,按下时接通(或断开),松开后断开(或接通)。实物图、原理图、封装 9.2 需求描述 通过 SW1、SW2、SW3、SW4 四个独立按键分别控制 LED1、LED2、LED3、LED4 的亮…

vite+vue2+elementui构建之 package.json

webpack版本太低,构建依赖太多,头大。 各种查阅资料,弄了一份直通构建vite构建elementUi核心文件, 构建基于开源若依vue2vue3版本改造,感谢开源,感谢若依。 vitevue2elementui构建之 vite.config.js-CSD…

提升变电站运维效率:安科瑞无线测温系统创新应用

一、引言 变电站作为电力系统的关键枢纽,承担着变换电压、分配电能以及控制电力流向等重要任务。在变电站的运行过程中,电气设备的接点温度监测至关重要。过热问题可能由多种因素引发,如电阻过大、接头质量欠佳、衔接不紧密、物理老化等&…

DMA的三种传输功能

①内存到内存 #include "dma.h" #include "stdio.h"#define BUF_SIZE 16uint32_t src_buf[BUF_SIZE] {0x00000000,0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666,0x77777777,0x88888888,0x99999999,0xAAAAAAAA,0xBBBBBBBB,0xCCCCCCC…

【MySQL】MySQL 表的增删改查(CRUD)—— 下篇(内含聚合查询、group by和having子句、联合查询、插入查询结果)

目录 1. 插入查询结果 2 聚合查询 (行与行之间运算) count 计算查询结果的行数 sum 求和 avg 求平均值 max 最大值 min 最小值 【小结】 3. group by 子句 分组 where 条件 having 条件 4. 联合查询(多表查询) 内连接…

“思考更长时间”而非“模型更大”是提升模型在复杂软件工程任务中表现的有效途径 | 学术研究系列

作者:明巍/临城/水德 还在为部署动辄数百 GB 显存的庞大模型而烦恼吗?还在担心私有代码库的安全和成本问题吗?通义灵码团队最新研究《Thinking Longer, Not Larger: Enhancing Software Engineering Agents via Scaling Test-Time Compute》…

电脑屏幕录制软件Captura源码编译(Win10,VS2022)

屏幕录像的意义: 教育教学方面 制作教学资源:教师可以通过录制屏幕来制作教学视频,演示软件操作、讲解复杂的知识点等。学生可以随时观看这些视频,便于复习和巩固知识,尤其对于一些抽象的概念或难以在课堂上一次性掌握…

记一次调用大华抓拍SDK并发优化

目录 一、问题分析 二、解决思路 三、贴代码 四、总结 一、问题分析 按惯例上问题: 设备告警采用高电平持续模式:一次开,不主动关就一直处于告警状态。 并发时多个请求下发 setDVRAlarmOutConfig,导致状态混乱。 “开 -&g…

Python图像变清晰与锐化,调整对比度,高斯滤波除躁,卷积锐化,中值滤波钝化,神经网络变清晰

本次使用图片来源于百度 import cv2 import time import numpy as np import pywtfrom PIL import Image, ImageEnhance#-i https://pypi.mirrors.ustc.edu.cn/simpledef super_resolution(input_path, output_path, model_path, scale4):# 初始化超分辨率模型sr cv2.dnn_su…

12个HPC教程汇总!从入门到实战,覆盖分子模拟/材料计算/生物信息分析等多个领域

在科学研究、工程仿真、人工智能和大数据分析等领域,高性能计算 (High Performance Computing, HPC) 正扮演着越来越重要的角色。它通过并行处理、大规模计算资源的整合,极大提升了计算效率,使原本耗时数日的任务能够在数小时内完成。 随着计…

使用Autocannon.js进行HTTP压测

目录 一、为什么选择Autocannon? 二、五分钟快速上手 1. 环境准备 2. 发起首个压测 3. 解读测试报告 三、高阶场景实战 场景1:POST请求压测 场景2:阶梯式压力测试 场景3:编程式集成测试 四、结果深度分析指南 1. 延迟分…

pnpm install报错:此系统上禁止运行脚本

依赖安装 报错信息: pnpm : 无法加载文件 C:\Users\XXX\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 …

第9章 多模态大语言模型

​​​​​​第1章 对大型语言模型的介绍第2章 分词和嵌入第3章 解析大型语言模型的内部机制第4章 文本分类第5章 文本聚类与主题建模第6章 提示工程第7章 高级文本生成技术与工具第8章 语义搜索与检索增强生成第10章 构建文本嵌入模型第11章 面向分类任务的表示模型微调第12章…

Python 绘图代码解析:用 Turtle 和 Colorsys 打造绚丽图案

注:本文为作者原创文章,未经许可禁止转载。 Python 绘图代码解析:用 Turtle 和 Colorsys 打造绚丽图案 在 Python 的世界里,有许多有趣的库可以用来创造精美的图形。今天,我们就来详细剖析一段使用turtle库和colorsys库的代码,看看它是如何绘制出独特图案的。 一、库的导…

RTMP 入门指南

1. RTMP 基础概念​​ ​​核心角色​​: ​​推流端(Publisher)​​:将音视频数据推送到服务器的设备(如OBS、手机APP)。​​服务器(RTMP Server)​​:接收推流并分发给…

Java Stream流 常用方法

Map 修改 用于修改集合里的值 public void findData(){ArrayList<String> list new ArrayList<>();list.add("张三");list.add("李四");List<String> collect list.stream().map(s -> s "a").collect(Collectors.toLi…

巧记英语四级单词 Unit5-上【晓艳老师版】

count 数&#xff0c; counter n.计算器&#xff0c;柜台 a.相反的 数数的东西就是计算器&#xff0c;在哪数&#xff0c;在柜台里面数&#xff1b;你和售货员的关系就是相反的(一个买货&#xff0c;一个卖货account n.账户&#xff0c;账号 一再的数accountant n.会计 一再的…

Git多人协作与企业级开发模型

目录 1.多人协作一 2.多人协作二 3.远程分⽀删除后&#xff0c;本地gitbranch-a依然能看到的解决办法 4.企业级开发模型 4.1.Git的重要性 4.2.系统开发环境 4.3.Git 分⽀设计规范 1.多人协作一 ⽬前&#xff0c;我们所完成的⼯作如下&#xff1a; 基本完成Git的所有本…

大众点评 mtgsig1.2 分析 mtgsig

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向过程 部分代码 params[yodaRead…