DEV Community

Cover image for Best Python framework for building a desktop application and GUI

Best Python framework for building a desktop application and GUI

codesharedot on October 25, 2019

Python has been the most trending programming language used for object oriented progamming. With python you can run simple statement over and over ...
Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Qt officially adopted PySide2 as their own formally maintained Qt5 bindings for Python, so it is advisable to use that over the third-party PyQt5 now. They're feature-identical at this point. (Bonus, PySide2 is LGPL, while PyQt5 is GPL!)

Also, just FYI, packaging a Kivy app for distribution is a living nightmare, due to a significant and complex bug in setup.py related to the Cython dependency. Tried to package my own project for six months, even getting Alan Pope ("popey" of Snapcraft), Gabriel Pettier ("tshirtman" of Kivy), "TheAssassin" of AppImage), and a Debian packaging expert (whose name is lost in my IRC backlogs) involved in trying to manage a workaround. No dice.

Collapse
 
philipstarkey profile image
Phil Starkey

Is PySide2 actually ready from primetime use? The list of known issues on the wiki doesn't fill me with confidence and there are a large number of bugs on the tracker.

I'm in agreement that Qt for Python (PySide2) is likely the best option in the long term due to the first party maintenance by Qt, but I'm concerned it's not as stable as PyQt5 yet.

Collapse
 
codemouse92 profile image
Jason C. McDonald

I haven't noticed anything major as of yet, and anyway, you know how it goes: adoption usually speeds up bugfixes.

I'd recommend to start building with PySide2; by time your project is finished, it will be stable. Or else, worse case, you just change your import statements and leave the rest the same. ;)

Thread Thread
 
philipstarkey profile image
Phil Starkey

I already have a large project that was ported from PySide1 to PyQt and it was non-trivial to do (sure most of it was the same but that couple of percent difference was a pain to find and update), so I'm not keen to repeat that experience until it's worth it. Sounds like maybe I should wait a bit longer or look into using qtpy as an abstraction layer.

Thread Thread
 
codemouse92 profile image
Jason C. McDonald

I think that was a newer thing about Qt5...that PySide2 and PyQt5 had identical APIs. But I could be wrong. The abstraction layer sounds wise in any case.

Thread Thread
 
amohgyebi profile image
Amoh - Gyebi Godwin

Pyside2 is still not very much maintained like PyQt5

Collapse
 
williamlake profile image
William Lake

I've found PySimpleGUI to be a great platform for quickly building a desktop app. Everything I've built with it is small (I.e. not an enterprise application,) so take my evaluation with a grain of salt- but my experiences have all been fantastic. My only real gripe is their readthedocs page is a bit of a mess.

Collapse
 
angelbearuk profile image
Kristy Whalen

The last time I tried PySimpleGUI, I felt it was effective for teaching a child how to program a gui, but that was in 2017. I was pretty underwhelmed, to say the least.

Collapse
 
pysimplegui profile image
PySimpleGUI

Huh... musta been something different. PySimpleGUI wasn't released until July 2018.

I've seen PySimpleGUI confused with SimpleGUI or something similar by a couple of people. Many of the earlier attempts at a simple Python GUI package have been abandoned, so perhaps this is why you've not seen any changes since 2017?

Thread Thread
 
angelbearuk profile image
Kristy Whalen • Edited

No, it was PySimpleGui. I had the year wrong. I just went through it's documentation two days ago, I couldn't figure out how to disable a text input based on some condition. It really hasn't changed much, but hey there a gozillion themes now.

Thread Thread
 
pysimplegui profile image
PySimpleGUI
window['input key'].update(disabled=True)
Enter fullscreen mode Exit fullscreen mode
Collapse
 
pysimplegui profile image
PySimpleGUI • Edited

Be sure and use the version of the docs that are on ReadTheDocs ( PySimpleGUI.org ). There is a table of contents that spans the entire left portion of the window. There are also 3 tabs. One of the tabs is the call reference. It has every Element, every element's methods, all functions, and parameters and return codes for each of them. Another is a Cookbook with a number of small projects detailed for you to follow and run.

Yes, having hundreds of pages of information in the lengthy format it's in does make it challenging at times, but it also makes searching really easy, and, most importantly..... it exists and is thorough. Most individual efforts like PySimpleGUI is don't have any documentation to speak of.

In addition, be sure and look through the couple hundred demo programs that show you how to apply each of the elements as well as how to integrate with a number of other important packages like 'matplotlib and OpenCV.

The documentation isn't just one thing in PySimpleGUI. It's meant to be an entire "system" of documentation that works together.

Oh, one final bit of the documentation is the doc strings. There's a YouTube tutorial about how to install PyCharm for use with PySimpleGUI because of the docstrings. They are a HUGE part of the PySimpleGUI documentation. They are the reason you should rarely need to open the main documentation. Press Control+Q and you're shown everything about a particular element's method's parameters. These docstrings are what is used to build the call reference portion of the printed docs.

Collapse
 
mikeeve profile image
Mike in Seattle

Fantastic. Just the summary I was looking for. I want to create a small, simple desktop app for sharing without a ton of unneeded baggage. (I once shared a small app for graphing which required only 25k bytes because it relied on dlls already in Windows.) Thanks.

Collapse
 
angelbearuk profile image
Kristy Whalen

I tried finding documentation in PySimpleGui on how to disable a text input control, no dice. That's a pretty basic feature in a GUI. I should be able to disable text inputs based on conditions. When I tried out PySimpleGui in 2017 I found it very limited, and in my opinion not much has changed. I'm trying out wxPython now.

Collapse
 
djay75 profile image
Dylan Jay • Edited

Suprised you didn't include beeware.org in your list. Toga is well designed and easy to create a cross platform app.

Collapse
 
skyandsand profile image
Chris C

Have you used PyCharm ? There is a free edition

Collapse
 
fanfan1609 profile image
Dat Vo

Pycharm is Python IDE. It is not Python GUI framework.

Collapse
 
twitmyreview profile image
Priyab Dash

I did not know pygui but now inwill surely try it out.

Collapse
 
tmblog profile image
tmblog

How would you create a standalone installation file for Windows with Python?