A free, open-source tool built to bridge the gap between how Python is taught and how students actually learn best.
According to research by King's College London, Python has become one of the most dominant programming languages taught in UK schools. It's versatile, readable, and widely supported — but teaching it well comes with a persistent challenge: students are asked to learn an abstract, text-based craft with very little visual feedback - often in a browser based IDE.
Historically, tools like Visual Basic 6 filled this gap. Students could drag a button onto a form, double-click it, and write code that ran immediately. The visual and the logical were side by side. That immediate feedback loop was enormously effective at building intuition for what code actually does.
When the industry moved on from Visual Basic, that kind of accessible, visual development environment didn't follow Python into the classroom. DragTK is an attempt to bring it back.
Every student who walks into a computing classroom has already spent years using software with graphical interfaces — apps on their phones, websites, games. They intuitively understand what a button does, what a text box is for, what it means for a window to open or close. How to input information into an app, expect a process to take place, and witness the output.
DragTK uses that existing knowledge as a foundation. Rather than starting from a blank terminal and asking students to imagine what their code produces, DragTK lets them build something they already recognise — a GUI application.
This approach reflects well-established educational thinking. The Concrete–Representational–Abstract (CRA) model suggests that learners grasp new concepts more effectively when they begin with something tangible and concrete before moving toward abstraction. A draggable button on a canvas is concrete. The tk.Button() call that represents it is abstract. Seeing both at once bridges that gap.
Students start with a visual, interactive object they can manipulate — then connect it to the code that represents it.
Students already know what apps look like from daily life. DragTK turns that prior knowledge into a scaffold for understanding programming concepts.
Code that produces a visible, interactive result immediately is far more motivating than code that prints to a terminal — especially for beginners.
DragTK wasn't designed in a vacuum. Schools face real IT constraints — local authority policies that restrict what can be installed, machines that can't run heavyweight IDEs, and teachers who need tools that just work without an afternoon of configuration.
DragTK ships as a standalone .exe that can be copied to any Windows machine and run immediately. No installation process, no admin rights required to run.
DragTK's .exe is current un-signed. The recommended option for schools is to download the .py source files directly from GitHub. Any machine with Python 3.8+ installed can run DragTK without any additional permissions.
DragTK is MIT licensed — free to use, modify, and redistribute. No licence fees, no sign-ups, no per-seat costs for schools.
The Learn section provides step-by-step lessons for each widget type, plus guided example projects — structured resources teachers can point students at directly.
The measure of success for DragTK isn't downloads or page views. It's whether a student who previously found Python abstract and discouraging sits down, drags a few widgets onto a canvas, writes a few lines of code, and runs something they built themselves — something that looks and feels like real software.
That moment of "I made this" is what DragTK is designed to create.
DragTK is a solo project, built and maintained openly. Contributions, feedback, and bug reports are always welcome.