Skip to main content

一个在终端中输出色彩斑斓、颜色多样内容以及快捷输入的强大工具。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

简体中文 PyPI Version License

Downloads Python Versions

Terminal Art

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.

🌟 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 nbcmdio.prt.drawIMG
  • 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))
    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(WIDTH, HEIGHT)
    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(70)
    # Draw a gradient bar, move down 2 lines, test terminal color support
    prt.drawHGrad((51, 101, 211), (190, 240, 72), 70).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

🙏 Acknowledgments

  • colorama for CSI terminal title methods
  • timg for ASCII grayscale image methods and fixing Issue #4
  • curses for hline, vline, rectangle methods

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nbcmdio-1.8.71.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nbcmdio-1.8.71-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file nbcmdio-1.8.71.tar.gz.

File metadata

  • Download URL: nbcmdio-1.8.71.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.8

File hashes

Hashes for nbcmdio-1.8.71.tar.gz
Algorithm Hash digest
SHA256 6a0fb441c23d05d9e813d13436e9a7ce0e8423d0ccffc7afa24bef66bf4c1f4c
MD5 3b3cf0f749c222387b53e9742131d08f
BLAKE2b-256 bcdcb048cb046e2667f057d404ab43802718433616c80434f2bc08e9e0ecbf50

See more details on using hashes here.

File details

Details for the file nbcmdio-1.8.71-py3-none-any.whl.

File metadata

  • Download URL: nbcmdio-1.8.71-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.8

File hashes

Hashes for nbcmdio-1.8.71-py3-none-any.whl
Algorithm Hash digest
SHA256 f7cf153dd219bed83ce76e780083021f735ad2ed37810c9a8e610281fd2f207f
MD5 ff048848d2b402fbb255b18a7e9cfec8
BLAKE2b-256 775315e4df7fba283440769b10ecb64f99c1752a42bed953a76526c4ed114a5f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page