PySimpleGUI is not simple
I have lately tested PySimpleGUI that advertises itself as simple, and “for both beginning and advanced programmers”. As it turns out, it is far from simple and I would not recommend it for beginners either.
So, what will you miss, if you try to use PySimpleGUI?
Problem 1: No resize — no stretch
Strange as it is for a package that started in 2018, windows are not resizable by default and if you do switch on resizing, the layout does not stretch. The layout does not even stretch if you set the window size manually. And there is only this fixed layout, to make things simple. So, as opposed to Kivy (or even tkinter), you don’t have any built-in option to make your app responsive.
Problem 2: Outdated default style
Even though the project has started in 2018, the default style looks old. The buttons are hard to read and the color scheme looks unprofessional. Take a look:
Problem 3: unintuitive programming interface
If PySimpleGUI is simple, I expect to create elements intuitively. So, I have tried to make a Tree element. The Tree element needs a TreeData object and TreeData has a rather peculiar way of initializing it. You cannot initialize TreeData from a combination of nested lists and dicts, as normal in the python world, but you have to use a method called insert. Insert takes two basic parameters: parent and key. Now, according to PySimpleGUI’s demo https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Tree_Element.py parent is the key of the parent element. However, for me, inserting to a parent resulted in a new parent added:
It turns out, insert adds a new element if TreeData already has key inserted with parent. So, we need to maintain a separate set to keep track of key-s and parent-s that are already inserted, so that we accomplish this:
Problem 4: difficult to submit user feedback
I was happy to read that the aim of the developers is to make GUI programming fun, not painful. So, I tried to report my boarding experience to PySimpleGUI, but I was facing a rather lengthy form (with 13 questions) that was clearly intended for advanced users. I should have submitted all the versions, looked up what ‘port’ do I use and all the things that are normally considered as under-the-hood. Now, as an experienced programmer, I can get all the data if I have the time to fiddle through. However, if I was a beginner programmer, I would not be able to submit my pain. I mean, beginners often don’t know what question to ask, but want to achieve something and fail. User feedback would crucially point out basic pain points that surprise the developers. Why would one stifle this useful source of input?)
If a project basically builds up a firewall against the feedback of half of the target users, how can it become eventually simple?