In the year 2001 I started to experiment with GUI applications in Python. The experience was summarized and published in the article "A complete Python Tkinter sample application for a long operation". Now, in the year 2015, a programmer have sent me an updated code. With the minimal changes, which mostly are update of the names of Tkinter modules, the code works.
A few remarks:
* It is quite possible that Tkinter has made a big step in its development. Maybe there is a better way to code what I have coded.
* "Still very complicated": yes, it is. But the basic rule helps: one and only one thread should work with GUI. All other threads should delegate GUI tasks (=send messages) to the GUI-thread. It is true for any GUI toolkit, I think.
* If there is no difference what to use, I recommend to use wxPython for GUI.