You are currently viewing How to Develop a Desktop App in Python Step-by-Step

How to Develop a Desktop App in Python Step-by-Step

Python is one of the most popular programming languages today due to its easy-to-read syntax, vast libraries, and versatility for building desktop, web, and mobile applications. If you want to build a lightweight desktop app with a graphical user interface (GUI), Python is an excellent choice.

In this step-by-step tutorial, we will see how to build a simple desktop app in Python using the Tkinter module. Tkinter provides Python with a powerful GUI toolkit for creating interactive applications. By the end of this tutorial, you’ll understand:

  • How to import and use Tkinter to create GUI elements
  • Adding widgets like buttons, labels and text boxes
  • Organizing widget layouts with grid() and pack()
  • Building interactivity by binding events to functions
  • Running the main event loop to display the app window

So let’s get started building our first Python desktop app!


Before we start coding, you need to have Python installed on your system, along with a code editor.

Installing Python

Python comes pre-installed on Linux and MacOS. For Windows, you’ll need to install it from the official website Make sure to install the latest 3.x version.

After installing Python, you should be able to invoke the Python interpreter by typing python from your terminal/command prompt.

IDEs and Code Editors

You can use any text editor to write Python code like Sublime, VSCode, Atom, Notepad++, etc. But I recommend using a Python IDE like PyCharm for the best development experience, including code completion and debugging.

For this tutorial, we’ll use IDLE which is the default IDE bundled with Python. It provides a simple text editor and Python shell all in one.

So with Python installed and an editor ready, let’s start coding our desktop app!

Importing Tkinter

The first step is to import the Tkinter module. Tkinter provides all the GUI widgets and tools we need to build our interface.

Import Tkinter at the start of your Python file like so:

import tkinter as tk

Here we import Tkinter and alias it as tk for easier usage. This tk object is our main interface to Tkinter and provides access to all its classes and functions.

Creating the Application Window

Once Tkinter is imported, we can create the root window of our app.

Use the Tk class to create the window object:

root = tk.Tk()

This constructs the main application window, assigned to the root variable.

We can set the title and initial size of the window like this:

root.title("My App")

The title will be displayed in the titlebar. And the geometry sets the initial width and height in pixels.

Adding Widgets

Our window is ready! Next we can start adding GUI widgets like buttons, text labels, input boxes etc.

Some common Tkinter widgets include:

  • Label – Display text which users can’t edit
  • Button – Adds clickable buttons
  • Entry – Text field for users to enter values

For example, to add a text label:

label = tk.Label(root, text="Hello World")

This creates a label with the text “Hello World”. The pack() method places and displays the label in the root window.

We can add a button:

button = tk.Button(root, text=”Click Me”)

And an input text box:

entry = tk.Entry(root)

Keep adding other widgets like this to build up the GUI. Make sure to call `.pack()` on each one to display it.

## Organizing Widget Layout

By default, Tkinter stacks widgets vertically in the window using `pack()`. But we can organize more complex layouts using the `.grid()` method. 

For example, to align widgets in a 2x2 grid:

label1.grid(row=0, column=0)
label2.grid(row=0, column=1)

entry1.grid(row=1, column=0)
entry2.grid(row=1, column=1)

This aligns the labels in the first row, and the text fields in the second row.

We can add padding around widgets using `.padx` and `.pady` like so:

label.grid(row=0, column=0, padx=10, pady=10)

This adds 10px horizontal and vertical padding. Play with `.grid()` to create complex layouts!

## Building Application Logic

So far our app only has a static GUI. To make it interactive, we need to link the widgets to Python functions. 

For example, we can define a function to update a label when a button is clicked:

def clicked():
label.configure(text=”Button was clicked!”)

button = tk.Button(root, text=”Click Me!”, command=clicked)

The `command` parameter binds the `clicked` function to run when the button is clicked.

We can get input values by adding a callback to the text entry:

def get_input():
user_input = entry.get()

entry = tk.Entry(root)
button = tk.Button(root, text=”Enter”, command=get_input)

Now when the user clicks the button, it will print the text they entered into the entry box.

Add functions to update labels, process inputs, call external modules etc to bring your app to life!

## Running the Event Loop

After building the GUI and adding interactivity, we need to start the Tkinter event loop to display and run our app. 

Call the `.mainloop()` method on the root window:

root = tk.Tk()

… Code to build GUI …


This will hand over control to Tkinter to manage app events like button clicks, keypresses etc. 

Our app window will display and run until we explicitly close it.

That's it! Now you have a complete Python desktop app built with Tkinter.

Here is the full code so far:

import tkinter as tk

root = tk.Tk()

label = tk.Label(root, text=”Hello World”)

button = tk.Button(root, text=”Click Me”)

entry = tk.Entry(root)


This builds a simple app with a text label, button and input box. You can enhance it further by:

  • Adding more widgets like checkboxes, radio buttons, listboxes
  • Organizing layouts using .grid() and padding
  • Binding events to widget actions
  • Adding multiple windows and screens

The possibilities are endless! Tkinter provides an extensive set of widgets and tools for building performant GUIs.


And there you have it – a step-by-step guide to building a desktop app in Python using Tkinter. We looked at:

  • Importing Tkinter and creating the root window
  • Adding common widgets like labels, buttons and text boxes
  • Arranging widget layouts with .pack() and .grid()
  • Writing functions to create interactivity
  • Running the main event loop with .mainloop()

You can use these concepts to start building your own Python desktop apps. Tkinter makes it easy to go from a simple script to a fully functional GUI application.

The complete code for this tutorial is available on Github. Download it to get started with your own Tkinter project!

I hope this tutorial provided a good overview of building Python GUIs. Let me know if you have any other topics you’d like covered. And as always, happy coding!

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome content in your inbox, every time we create awesome content.

We don’t spam! Read our privacy policy for more info.

Leave a Reply