Web Analytics Made Easy - Statcounter
Skip to content

The Concept

PySimpleGUI was designed to be a uniquely Python solution to creating user interfaces that makes the developer the focal point.

Mind the Gap

GUI_Gap_2020 One of the most powerful aspects of the Python language is the extensive catalog of available libraries. The technologies available to Python programmers are huge and diverse. A problem that's common to all of these technologies is the problem of connecting "normal people" (humans) to them using a user interface they are accustomed to.

When Computers Opened Up

Using a text interface, a command line, has been a traditional way to interact with programs going back to the first computers that were not run via "batch jobs". In the early 1980s, when the IBM 360/370 was still in use, punch cards were submitted as "batch jobs" to be run on the computer with the results provided back to the programmer once the program had completed execution.

When computers became "interactive", then programmers and users could interact with programs in a more conversational way. Ask for this, get back that, all accomplished through a text-based interface. Onto the stage stepped CP/M and MS-DOS operating systems and the "Home Computer". End users struggled, but made the best of finally having access to computers.

We all know the evolution from here... Graphical User Interfaces, Windows, MacOS, Tablets, Phones, and beyond. Children at 3 years old quickly learn how to operate a modern tablet device. Computing grew up and opened itself up to the world.

After Computers Became Accessible, So Did Programming

Once computers were available to the masses, the next logical step in programming was to evolve and become open to those that wanted to learn to program.

Python has opened the doors to programming at an unprecedented level. Within days someone with the desire to learn to program can have a simple program up and running using Python. More people are writing programs than at any other time in history.

Text Interface - Fine for Programmers, but Not For Mary In the Accounting Department

The 1978 book, "The C Programming Language", gave the world the ultimate "my first program". A classic is an understatement. It's beautiful in the message and the simplicity. And, it beautifully illustrates the "Gap" between end users and the technologies now easily accessible to Python programmers.

In Python, it's 1 line of code to run a "hello world" program.

print("Hello, World!")


While the Microsoft Windows Command Prompt was tolerated by users in the 1990's, it's use began a steady downhill decline started 30 years ago with the 1992 release of Windows 3.1.

Programmers write code in text. They're used to seeing plain text and interacting with computers using pure text interfaces. Everyone else, however, is not. And this is "The Gap"... "The GUI Gap".

Python programmers are OK living in the text-only world, non-programmers (e.g. "normal people") are not. A 3 year old can work with a graphical user interface, but not a command line.

Creating GUI Interfaces to Fill the Gap

While Python make it possible for most people to learn the basics of programming in a few days or a few weeks, creating a GUI interface has remained out of reach for all but seasoned Python developers.

Some "simplified" Python GUI libraries have been published over the 31 years that Python has existed, but none have offered access to the entire pallet of GUI elements and a way to arrange them in complex, customized ways that results in an application that end-users are accustomed to using.

This problem, creating complex user interfaces, to be used by end-users accustomed to "Windows programs", with the ease and simplicity that Python has delivered to the world as a programming language, is the problem PySimpleGUI was designed to solve.

Made For Python Using Python

PySimpleGUI was developed from scratch specifically for use with Python. It uses Python's unique features that have made Python one of the most popular programming languages of all time. Because it wasn't adapted from a previous project written in another language, PySimpleGUI had the freedom to be made in a way that works in harmony with Python's uniqueness.

That same freedom made it possible to provide a solution that leverages the power of objects without requiring the developer to learn to write their own objects. There is a significant difference in skill level required for using objects versus developing objects. PySimpleGUI programmers can choose the amount of the Python language to utilize without impacting the end result. A novice Python programmer is able to create as complex of a user interface as an experience Python programmer can. Programming skill does not limit the potential solutions.


The goals for the PySimpleGUI project are predictably simple:
1. You have fun
2. You are successful


Who doesn't like to have fun? While having a good time, how about being successful in solving the problem too? The PySimpleGUI Ecosystem was the result of following these 2 goals. Writing code for a library and releasing it is not all that's needed to help the user be successful. It's the starting point, not the ending point.

At first glance, these goals sound silly, bordering on naive, but your experience in using PySimpleGUI will determine if you continue to use PySimpleGUI. Being successful while enjoying the process is an ideal outcome. Yea... "Fun" as a serious project goal sounds crazy, but as you work with PySimpleGUI you'll better understand how "fun" plays an important role in software development.

Notice too that "You" is the first word of both goals. You are the center of attention. It is your success, your experience, and your enjoyment that is to be maximized.

The PySimpleGUI Ecosystem

Making the developer and their experience the focus led to more than just a Python GUI library. It resulted in an interlocking and complete ecosystem consisting of:

If you can remember 2 domains, you'll be able to get to everything easily:

  1. PySimpleGUI.com - The GitHub / Home of PySimpleGUI
  2. PySimpleGUI.org - The documentation