A layered paint application built with Python, Tkinter, and Pillow — split across multiple modules instead of one giant script.
caxt/
├── main.py entry point — run this
├── app.py main window, menu, file I/O, event wiring
├── canvas.py layer stack + compositing engine
├── tools.py pencil, brush, spray, eraser, shapes, bucket, eyedropper, text
├── toolbar.py left-hand tool/color/size panel
├── layers_panel.py right-hand layers list panel
├── history.py undo/redo stack
├── requirements.txt
└── logo.png <- put your logo here (see below)
pip install -r requirements.txt
python main.py- Layers — add, delete, duplicate, rename, reorder, merge down, flatten, opacity, blend modes (normal/multiply/screen/overlay)
- Tools — pencil, brush (round/square), airbrush/spray, eraser, line, rectangle, ellipse, flood fill (adjustable tolerance), eyedropper, text, selection, move, emoji/sticker stamp
- Paste & clipboard — Ctrl+V pastes an image straight from the OS clipboard (or an in-app copy/cut of a selection) as a new layer
- Selection — rubber-band select, copy/cut/paste, crop to selection, trim transparent edges
- Filters — blur, sharpen, smooth, contour, detail, edge enhance, emboss, find edges, grayscale, invert, sepia, posterize, solarize, vignette, noise — each previewable at adjustable strength, on the current layer or all layers
- Adjustments — live brightness/contrast/saturation/sharpness sliders
- Stickers — categorized emoji picker, stamped at any size
- Text — font family, size, and color dialog
- Watermark — positioned or tiled semi-transparent text stamp
- Color — palette + full picker, recent-colors strip, named persisted palettes
- Undo/redo — Ctrl+Z / Ctrl+Y, plus a History panel to jump to any step
- Command palette — Ctrl+P to search and run any action
- File I/O — New (with size presets), Open, Save, Save As, Export (rescale/JPEG quality/PDF), Insert Image as Layer, recent files list
- Projects — save/open full layered
.caxtprojfiles (zip of PNGs + metadata) - Canvas — resize, rotate, flip, zoom 25–600% + fit-to-window, grid overlay, pixel rulers, mirror/symmetry drawing
- Other — light/dark theme, preferences, autosave, action log
- Shortcuts — Ctrl+N/O/S/Shift+S, Z/Y undo-redo, C/X/V copy-cut-paste, D duplicate layer, A select all, Shift+A clear selection, Delete, P command palette, +/- zoom
- Undo/redo works by snapshotting the full layer stack, so it's correct for every tool, at the cost of memory — bounded to the last 40 actions.
- App settings (preferences, recent files, palettes, autosave) are stored
under
~/.caxt/. - Clipboard image paste uses Pillow's
ImageGrabon Windows/macOS; on Linux it falls back toxclipif installed.