一个在终端中输出色彩斑斓、颜色多样内容以及快捷输入的强大工具。A powerful tool for outputting colorful content and enabling quick input in the terminal.
Project description
NbCmdIO: A Powerful Tool for Terminal Colors and Interaction
NbCmdIO is a powerful Python library that transforms ordinary command-line terminals into vibrant visual canvases and robust interactive platforms! Say goodbye to monotonous black-and-white outputs and welcome the world of true RGB colors; farewell to clunky text interfaces and embrace precise cursor control and input capture capabilities.
Keywords:Terminal, CSI escape sequence, print, colorful, input, cursor, draw, Image, Gif
🌟 Core Features
⚡ Chainable Calls
- Set cursor positions and styles anytime, anywhere—quick, convenient, and easy to read!
prt[row, col].bold().fg_red("text")
🎨 True-Color RGB Terminal Styling
- Supports 24 bit RGB and HEX formats for foreground and background colors
- Includes default colors: Black, Red, Green, etc.
- Supports effects like Bold, Underline, Italics, etc.
- True-color image display, with each character representing two pixels for enhanced resolution
- Displays ASCII grayscale images
🖱️ Character-Level Cursor Control
- Precise character-level cursor positioning
- Save/restore cursor positions
- Get cursor position
📦 Dynamic Area Management
- Create independently updatable regions
- Supports nested regions
⌨️ Input Capture (In Progress)
- Single-key unbuffered reading
- Shortcut combination detection
🚀 Quick Start
Installation
pip install nbcmdio
Basic Usage
from nbcmdio import prt
def NbCmdIO():
lavender = "#ccf"
# Clear screen and set terminal title
prt.cls().setTitle("NbCmdIO")
# On line 2, bold, blue text, center-aligned with gradient background
title = " NbCmdIO by Cipen "
prt[2].bold().fg_hex("#00f").gotoCenterOffset(getStringWidth(title), 2)
prt.drawHGrad((230, 92, 0), (249, 212, 35), string=title)
WIDTH = 40
HEIGHT = 10
center_offset = (prt.size_col - WIDTH) // 2
# Draw a rectangle with foreground #CCF at (3, center_offset) and set the new region to this rectangle
prt.fg_hex(lavender)[3, center_offset].drawRect(HEIGHT, WIDTH)
prt.fg_blue()[0, 3](" NbCmdIO ").bold()[0, WIDTH - 8](prt.__version__)
b2 = " "
# Enter context (styles aren't auto-reset inside), add square color blocks at the 4 corners
with prt.bg_hex(lavender):
prt[1, 1](b2)[1, WIDTH - 1](b2)
prt[HEIGHT, 1](b2)[HEIGHT, WIDTH - 1](b2)
# Add styles within strings (ensure characters are defined separately, not directly in chain calls)
line1 = f"Welcome to {prt.bold().bg_hex(lavender).fg_hex('#000')} NbCmdIO "
line2 = "Print your string colorfully!"
# Save and reuse styles (includes position, color, effects)
head_style = prt.fg_red().bold().makeStyle()
prt[1].use(head_style).alignCenter(line1)# Use style in new region's first line for centered text
prt[2].use(head_style).alignCenter(line2)
prt[3, 3].fg_grey().drawHLine(WIDTH - 4)
text = r"""
_____ _____ _______
| _ \ | _ \ |__ __|
| |__) | | |__) | | |
| __ / | _ < | |
| | | | \ \ | |
|_| |_| \_\ |_| """[1:]
lines = text.splitlines()
chr1 = [l[:8] for l in lines]
chr2 = [l[8:18] for l in lines]
chr3 = [l[18:] for l in lines]
prt.fg_red().bold()[4, 8].printLines(chr1)
prt.fg_green().bold()[4, 16].printLines(chr2)
prt.fg_blue().bold()[4, 25].printLines(chr3)
# Move cursor to next line in region, then exit
prt[HEIGHT + 1].setOriginTerm().end()
prt.gotoCenterOffset(50)
# Draw a gradient bar, move down 2 lines, test terminal color support
prt.drawHGrad((51, 101, 211), (190, 240, 72), 50).end(2)
prt.test().end()
NbCmdIO()
🔮 Future Roadmap
| Version | Features | Status |
|---|---|---|
| v1.0 | RGB Color Support, Area Management | ✅ Released |
| v1.9 | Progress bar | ⏳ Developing |
| v2.0 | Input Capture System | 📅 Planned |
| v3.0 | Terminal UI Component Library | 💡 Conceptualizing |
PLAN
- Progress bar
- Customized Exception info
- Async operation
🌍 Community Contributions
We welcome all forms of contributions! Whether you:
- Discover and report issues
- Submit feature requests
- Contribute code
- Create documentation
- Share creative use cases
📜 Open-Source License
NbCmdIO uses the MIT License—feel free to use it in both commercial and personal projects!
✨ Experience Terminal Magic Now!
pip install nbcmdio
Ready to elevate your command-line experience to a whole new dimension? NbCmdIO is waiting to bring your terminal to life!
📜 Changelog
- 1.8.1 Completed all basic Output features, major update
- 1.8.2 Initial unbuffered single-key input capture
- 1.8.3 Fixed issues, added quick PS1 batch files, separated style module
- 1.8.4 Added multi-line region printing, separated utils
- 1.8.5 feat: drawHGrad (gradient), drawIMG (terminal image display)
- 1.8.6 improve: added validation for loc, size feat: drawImageStr
- 1.8.63 feat: Output.playGif
- 1.8.64 fix: height overflow in Output.valSize
- 1.8.7 big change: Many functions have their parameter order as height before width. add: Area, Output.clearRegion fix: some little problem
- 1.8.71 feat: FrameTimer, used in Output.drawGif
- 1.8.72 add: utils.getIMG support url; improve: utils.FrameTimer support custom duration for each frame; Output.drawGif uses gif duration.
- 1.8.73 fix: Output.gotoCenterOffset; height overflow;
- 1.8.74 fix: return value of Output.drawImageStr add: Output.setFile: file=None, flush fix: Output.print: write by chunk update: system os config
🙏 Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nbcmdio-1.8.74.tar.gz.
File metadata
- Download URL: nbcmdio-1.8.74.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3df1594e85094954331731a50924965db382c9b1ae7b3253f27ee73d72606fcd
|
|
| MD5 |
aa6fabdbf6a130140799b05705c4d19f
|
|
| BLAKE2b-256 |
c13cae1f42348ab8351af5677c33672a7f3ad5f74493577d825e02e67d9fbf4e
|
File details
Details for the file nbcmdio-1.8.74-py3-none-any.whl.
File metadata
- Download URL: nbcmdio-1.8.74-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9e6787c1d6f4ea4b6c774049eb7b11d8c7fd635004f200f4d33b5fa26f685ad
|
|
| MD5 |
032d5b9bd5e5a8762cd192917e2e0951
|
|
| BLAKE2b-256 |
03bfda4035857a53c39f6d3e101f49de93489fe97e12d9d57a7b14e14f0a01df
|