Machine Room github

Project · Python

PyTkQuickGui

A visual drag-and-drop builder for Python desktop interfaces on tkinter and ttkbootstrap. Design the window on a live canvas, edit widget attributes, save the project as JSON, then generate a readable Python program — for ttkbootstrap or, experimentally, for Flet.

Laying out a tkinter window by hand means editing nested grid() calls and re-running to see what moved. This tool inverts that: draw the interface on a live canvas, then read the code it produces.

The generated output is meant to be readable and editable rather than a faithful dump of internal state — the point is to get a sensible starting file you can then own, not to hide Python behind a designer forever.

What it does

  • Builds ttkbootstrap interfaces visually on a live design surface.
  • Responsive Grid layout by default, or free-form Place layout.
  • Moves, resizes, duplicates, deep-clones, deletes, groups and re-parents widgets.
  • Edits attributes with colour, font, image, entry, combo and spinbox controls.
  • Type-specific property controls for Grid and Place.
  • Saves and reloads projects as JSON.

Two backends

The same project generates a ttkbootstrap program or a Flet program. Flet export is marked experimental in the project's own README, and that is the honest description: the ttkbootstrap path is the mature one.

The examples

Seven worked projects ship in examples/, each rendered by both backends, so the two outputs can be compared directly:

ProjectWhat it exercises
SimplePlaceStarter with one of each basic control
CalculatorNineteen hand-placed buttons
UserFormEntries, a combo box and a notebook
sudoku3A 91-widget Grid project
sudokupackGrid, small
Full list and screenshots in examples/ and docs/ in the repository.

Status

Grid and Place are usable and under active testing. Pack remains disabled while the other two are stabilised — a deliberate choice, since three half-working geometry managers would be worse than two that behave.

The source, the issues and the history are in the repository.

View on GitHub →