Let's be honest: Python Tkinter has a bad reputation. Most people think of Windows 95-style gray buttons and clunky interfaces when they hear "Tkinter".
I wanted to challenge that.
For the past few weeks, I've been rebuilding my open-source privacy tool, DotScramble, from the ground up. My goal was to prove that you can build a modern, scalable, and fully localized desktop app with standard Python libraries if you use the right architecture.
Today, I released v1.2.3, and here is how I solved the biggest engineering challenges.
The Move to MVC
The old version was a "monolithic script"—you know the type. main.py was getting dangerously close to 1,000 lines, and adding a simple feature broke three others.
I refactored the entire codebase into a strict Model-View-Controller (MVC) pattern:
Models: Handle the heavy lifting (OpenCV image processing, Face Detection logic).
Views: Pure UI code. They don't know how things work, they just display data.
Controllers: The glue. They take user input from the View and tell the Model what to do.
This separation made the code incredibly stable and easy to test.
The "RTL" Challenge
The hardest feature to implement was Native Arabic Support. In many apps, switching languages just changes the text. But for Arabic (or Hebrew), the entire layout needs to mirror.
Sidebar: Left ➡️ Right
Toolbar: Left ➡️ Right
Icons: Flipped
I built a dynamic RTL_Manager that detects the language direction and rebuilds the grid layout on the fly. You can switch between English and Arabic instantly, and the UI literally flips before your eyes. No restart required.
Modern UI & Persistence
To make it look 2026-ready, I implemented:
Theme Engine: A centralized theme manager supporting "Cyberpunk", "One Dark", and "Dracula" palettes.
SQLite Auto-Save: I got tired of re-setting my blur strength every time I opened the app. Now, a lightweight SQLite DB saves every slider position and toggle state in real-time.
Features Overview
Face/Plate/Text Detection: Powered by OpenCV and Tesseract.
Batch Processing: Drag & drop a folder of 100 images, apply a "Pixelate" effect, and export them all in seconds.
Privacy First: Everything runs locally. No cloud uploads.
Open Source
This project is 100% open source. If you're curious about how I handled the RTL logic or the MVC structure in Python, check out the repo!
GitHub Repository: https://github.com/kareem2099/DotScramble
I'd love to hear your feedback or see your PRs!
Top comments (1)
GitHub Repo : github.com/kareem2099/DotScramble
Download Release: github.com/kareem2099/DotScramble/...