Skip to main content

Simple Annotation Whiteboard — pen, line, arrow, and text annotation for topology diagrams

Project description

pywboard

Simple Annotation Whiteboard — a lightweight desktop tool for annotating network topology diagrams and screenshots with pen, lines, arrows, and text labels.

Built with PyQt6 + QWebEngine. Zero CDN dependencies. Fully offline.

pywboard screenshot

Install

pip install pywboard

Or from source:

git clone https://github.com/scottpeterman/pywboard.git
cd pywboard
pip install -e .

Requirements

  • Python 3.9+
  • PyQt6 >= 6.5
  • PyQt6-WebEngine >= 6.5

Usage

# Launch empty canvas
pywboard

# Open with a topology image
pywboard topology.png

# Module execution
python -m pywboard
python -m pywboard screenshot.png

Features

Drawing Tools

Tool Key Description
Pen P Freehand drawing
Line L Straight lines
Arrow A Directional arrows
Text T Click to place text labels
Eraser E Remove annotations
Pan H Move the background image

Canvas Sizes

Preset sizes from the toolbar dropdown:

  • XGA — 1024 × 768
  • Full HD — 1920 × 1080
  • QHD — 2560 × 1440
  • 4K UHD — 3840 × 2160
  • Large Topo — 2400 × 1600
  • XL Topo — 3200 × 2400
  • XXL Topo — 4000 × 3000
  • Custom — up to 8000 × 8000

View Modes

  • FIT — scales canvas to fit the window (default)
  • 1:1 — actual pixel size with scroll navigation

Toggle with F key, or Ctrl+0 (fit) / Ctrl+1 (actual size).

Keyboard Shortcuts

Shortcut Action
Ctrl+O Open image (native dialog)
Ctrl+Shift+S Export PNG (native save dialog)
Ctrl+Z Undo last annotation
Ctrl+Q Quit
Ctrl+0 Fit to window
Ctrl+1 Actual size (1:1)
F Toggle FIT / 1:1

Other Features

  • Drag & drop images onto the canvas
  • 9 colors with 4 stroke widths
  • Native file dialogs for open/save (via PyQt6 bridge)
  • Dark theme throughout — toolbar, menus, scrollbars
  • Export full-resolution annotated PNG

Architecture

pywboard/
├── pyproject.toml
├── README.md
├── LICENSE
└── pywboard/
    ├── __init__.py
    ├── __main__.py          # python -m pywboard
    ├── app.py               # PyQt6 QWebEngineView wrapper
    └── assets/
        └── annotate.html    # Self-contained HTML/CSS/JS canvas app

The HTML annotation engine is entirely self-contained — no external fonts, no CDN JavaScript, no build step. The PyQt6 wrapper adds native file dialogs, menu bar, CLI image loading, and dark window chrome via a QWebChannel bridge.

The HTML also works standalone in any browser for quick use without Python.

License

MIT

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

pywboard-0.1.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

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

pywboard-0.1.0-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file pywboard-0.1.0.tar.gz.

File metadata

  • Download URL: pywboard-0.1.0.tar.gz
  • Upload date:
  • Size: 16.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for pywboard-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a2af2d0cb22a6979d097219b2ba6dcba2e185a8d62cfd99739eeb702ae9cb3f6
MD5 d291636549dddba5276491d2378aa66e
BLAKE2b-256 072af22474916ac56006c9f652eff33451bd765944155f6aaad274c361885b1f

See more details on using hashes here.

File details

Details for the file pywboard-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pywboard-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for pywboard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f02245c7d7b4b7908ca7ddcbd57f5b67dec6887f929450f6ea0351c9b6d3e93
MD5 2256852148d766048a4513b1888382d3
BLAKE2b-256 107bc0a303524f99625306ec7829c79530ec92ec321193914bcb9e810756d1a6

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