Free · online · no install

Build Python tkinter GUIs in your browser, free.

A visual, drag-and-drop tkinter GUI builder that runs online. Lay out windows, style them, and export clean, runnable Python. No boilerplate, no lock-in.

No account needed to design and download. Sign in free only when you want to save.

Everything you need to ship a desktop app

Drag-and-drop canvas

Place, resize, and align widgets on a true-to-tkinter canvas with snapping, zoom, and a live property inspector.

</>

Clean, runnable code

Every change generates idiomatic, class-based tkinter you can actually read. No runtime, no lock-in, just main.py.

Multi-window projects

Build login → main flows. Each form becomes its own window, wired together with open_<form>() helpers for you.

SQLite data layer

Toggle a ready-made Database class in a separate database.py, shared across your forms. Keep SQL out of your UI.

Themes & fonts

Apply colour templates and fonts across the whole project. Reflected live on the canvas and baked into the export.

Images, dates and dialogs

Show a picture, pick a date from a calendar, open a file chooser or a yes/no box — the parts tkinter makes you look up, written for you.

Charts with matplotlib

Drop a chart on the window and get the FigureCanvasTkAgg embedding written for you, with a plot helper ready for your data.

Bring your own code

Paste existing tkinter and keep editing it visually. Your handlers, imports, and helpers are preserved on export.

From blank window to running app in three steps

1

Drag widgets onto your window

Buttons, entries, lists, frames, all grouped by purpose in the palette.

2

Set properties, themes & data

Tune each widget, pick a theme, and turn on the database layer if you need it.

3

Download and run

Export main.py (and database.py) and run it with Python. That’s your app.

A free, browser-based tkinter designer

Most ways to build a Python tkinter interface mean hand-writing widget coordinates, or installing a desktop tool. Tkinter Designer is a free online GUI builder: open it in your browser, drag widgets onto a window, and it writes the tkinter code for you. There’s nothing to install and no sign-up cost. You only need Python to run what you export.

It’s built for real apps, not just mockups. Lay out forms with a drag-and-drop canvas, wire multiple windows together (like a login screen that opens a main window), add an optional SQLite data layer, and apply a colour theme, then download a clean, class-based main.py you fully own. Already have code? Paste your existing tkinter in and keep editing it visually.

Want the modern look? The same canvas also exports CustomTkinter (rounded, flat, light-or-dark widgets) and ttkbootstrap, which re-themes the ttk widgets already in the standard library with Bootstrap-inspired palettes. Both come from the same design, so you can switch toolkit without redrawing anything.

In a hurry? Start from a ready-made tkinter template: a login form, calculator, to-do list, temperature converter, or quiz app. Edit one of those instead of starting from an empty window. For more detail, read the step-by-step guide to building a tkinter GUI online, or see what to look for in a tkinter GUI builder. Plotting data? There's a walkthrough of embedding a matplotlib chart in tkinter and the mistakes that usually come with it. For the questions that come up first — setting the window size, reading an Entry, opening a second window — the tkinter how-to pages answer each one in a screenful.

Frequently asked questions

Is Tkinter Designer free?

Yes, it’s completely free. You can design and download working Python without even making an account; a free sign-in is only needed if you want to save designs to reopen later. No credit card, no install, no trial limits.

Do I need to install anything?

No. The designer runs entirely in your browser. You only need Python installed to run the code you export.

What code does it generate?

Clean, class-based Python using standard tkinter and ttk. It’s a plain main.py you can read, edit, and run, with no framework or runtime lock-in.

Can I import my existing tkinter code?

Yes. Paste existing tkinter and keep editing it visually. Your place()-positioned widgets, event handlers, and imports are preserved when you export.

Does it support multiple windows and a database?

Yes. Build multi-window apps such as a login → main flow, and optionally generate a separate SQLite database.py that’s wired through your forms.

Does it support CustomTkinter?

Yes. Switch the toolkit and the same design exports CustomTkinter code with modern rounded widgets and light or dark appearance, while the canvas previews how CTk will actually render it. Your widgets, layout and handler code carry across unchanged.

Does it support ttkbootstrap?

Yes. Switch the toolkit and the same design exports ttkbootstrap code, which re-themes the ttk widgets already in the standard library with Bootstrap-inspired palettes. Twenty-one of the twenty-five widgets map straight across, and because ttk takes colours from styles rather than constructor options, any per-widget colour you set is emitted as a named ttk style.

Can I add a chart or graph?

Yes. Tkinter has no chart widget, so the designer includes a matplotlib one: drag it on, choose line, bar or scatter, and set the title and axis labels. The export embeds it with FigureCanvasTkAgg, sizes the figure to the box you drew, and generates a plot_<name>(x, y) helper that redraws it from your data. It is the one widget needing a package outside the standard library — pip install matplotlib — and the project zip lists it in requirements.txt for you.

Can I show an image?

Yes. Drop an Image widget on the canvas and point it at a file. The export builds the PhotoImage, scales it to the box you drew, and — the part that catches everyone — keeps a reference to it on the instance, because an image held only by the widget is garbage-collected and the picture silently goes blank. Scaling and JPEG support use Pillow; a PNG at its original size needs nothing extra.

Can a button open a file chooser or a message box?

Yes. Buttons and menu items can open any of the standard tkinter dialogs — an info, warning or error box, a yes/no question, or a file open, save or folder chooser — instead of running your own function. The generated handler includes the part people forget: file choosers return an empty string when cancelled, so the code checks for it.

Is there a date picker?

Yes. Tkinter has no date widget, so the designer uses tkcalendar on classic tkinter and CustomTkinter, and ttkbootstrap's own built-in DateEntry when you export for that toolkit — where it needs no extra package at all. Read the value with .get_date(), which returns a real datetime.date.

Can users drag files onto my app?

Yes. Switch on "Accept dropped files" for any widget and the export registers it as a drop target via tkinterdnd2, generating a handler that splits the dropped paths as a Tcl list so filenames containing spaces survive. Because tkinterdnd2 has to build the root window, the generated code does that too, using the documented mixin for CustomTkinter and ttkbootstrap.

Can I style my app with themes and fonts?

Yes. Apply colour templates and fonts across the whole project, reflected live on the canvas and baked into the exported Python.

Build your tkinter GUI faster.

Open the designer, drag your first widget, and download clean Python in minutes.

Start building, no sign-up →