Simple Annotation Whiteboard — pen, line, arrow, circle, square, 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, shapes, and text labels.
Built with PyQt6 + QWebEngine. Zero CDN dependencies. Fully offline.
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 |
| Rectangle | R |
Rectangles and boxes |
| Ellipse | O |
Ellipses and circles |
| 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+N |
New canvas (reset all) |
Ctrl+O |
Open image (native dialog) |
Ctrl+Shift+S |
Export PNG (native save dialog) |
Ctrl+V |
Paste image from clipboard |
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
- New canvas — reset everything and start fresh without restarting
- 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
GPLv3
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
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 pywboard-0.1.2.tar.gz.
File metadata
- Download URL: pywboard-0.1.2.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13c018f04e82e361f536920a259cfbb148a90f02c5266bfaf41cd9159f655b8b
|
|
| MD5 |
cc25162d480d1ee92531bea6bdce22b7
|
|
| BLAKE2b-256 |
bd0e4b5d7fdcf909fc21b1526075144b5983d255bcfe731e3f993dcf60ac8127
|
File details
Details for the file pywboard-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pywboard-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6470b0b118a01d26c500dcde0beeb63c710b1f4a84886a7035199b5ca82c918c
|
|
| MD5 |
eb8e1c079979afb3bcb47f62b5d0bc42
|
|
| BLAKE2b-256 |
0e05e7211a39973fe9eb742edc1dc75714ff071dbc72216ce1961b0dfeb9196f
|