나는 Tkinter로 네이티브 RTL Python GUI를 만들었고 (실제로 보기 좋다)

발행: (2026년 2월 1일 오후 08:00 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Introduction

Python Tkinter는 종종 나쁜 평판을 가지고 있습니다. 많은 사람들은 Windows 95 스타일의 회색 버튼과 투박한 인터페이스를 떠올리죠. 저는 그 인식을 바꾸고 싶었습니다.

지난 몇 주 동안 저는 오픈소스 프라이버시 도구 DotScramble을 처음부터 다시 만들었습니다. 목표는 올바른 아키텍처만 사용한다면 표준 Python 라이브러리만으로도 현대적이고 확장 가능하며 완전 현지화된 데스크톱 앱을 만들 수 있다는 것을 증명하는 것이었습니다.

오늘 v1.2.3을 출시했으며, 가장 큰 엔지니어링 과제를 어떻게 해결했는지 소개합니다.

The Move to MVC

전체 코드베이스를 엄격한 Model‑View‑Controller (MVC) 패턴으로 리팩터링했습니다:

  • Models – 무거운 작업을 담당합니다 (OpenCV 이미지 처리, 얼굴 인식 로직).
  • Views – 순수 UI 코드입니다. 동작 방식을 알지 못하고, 단지 데이터를 표시할 뿐입니다.
  • Controllers – 연결 고리 역할을 합니다. 뷰에서 사용자 입력을 받아 모델에 무엇을 해야 할지 알려줍니다.

이 분리 덕분에 코드는 놀라울 정도로 안정적이고 테스트하기 쉬워졌습니다.

The “RTL” Challenge

  • Sidebar: Left ➡️ Right
  • Toolbar: Left ➡️ Right
  • Icons: Flipped

언어 방향을 감지하고 그에 따라 그리드 레이아웃을 실시간으로 재구성하는 동적 RTL_Manager를 만들었습니다. 영어와 아랍어를 즉시 전환할 수 있으며, UI가 눈앞에서 실제로 뒤집힙니다—재시작이 필요 없습니다.

Modern UI & Persistence

  • Theme Engine: “Cyberpunk”, “One Dark”, “Dracula” 팔레트를 지원하는 중앙 집중식 테마 매니저.
  • SQLite Auto‑Save: 가벼운 SQLite 데이터베이스가 모든 슬라이더 위치와 토글 상태를 실시간으로 저장하므로, 앱을 열 때마다 블러 강도를 다시 설정할 필요가 없습니다.

Features Overview

  • Batch Processing: 100장의 이미지가 들어 있는 폴더를 드래그 & 드롭하고, “Pixelate” 효과를 적용한 뒤 몇 초 만에 모두 내보낼 수 있습니다.
  • Privacy First: 모든 작업이 로컬에서 이루어지며, 클라우드 업로드가 없습니다.

Open Source

GitHub Repository:

여러분의 피드백을 듣고 싶고, 풀 리퀘스트도 환영합니다!

Back to Blog

관련 글

더 보기 »

크라우드펀딩 플랫폼

GitHub Copilot CLI 챌린지 제출 이것은 GitHub Copilot CLI 챌린지에 대한 제출입니다 https://dev.to/challenges/github-copilot. Repository bash git...