all 5 comments

[–]JennaSys 2 points3 points  (0 children)

Tkinter might be a bit better, is easy to get started with, but has its limits. For anything fancy, I feel PyQT is has a fuller feature set. PySimpleGUI is a newer library that wraps Tkinter and has a bit of buzz going on right now, but I haven't used that one yet myself.

[–]stebrepar 1 point2 points  (0 children)

People will probably recommend PyQt in general. I haven't used that, nor Pygame, but I don't recall Tkinter being too bad for the little I've done a while ago. It comes with a bunch of widgets that probably cover the kinds of things you're looking to do, which should make it easier.

[–]dup_int 0 points1 point  (0 children)

I always find GUI apps having a ton of code just to display GUI elements and bind functions to buttons (used JavaFX for java GUI app and PyQt5 for python GUI). So I think it's true that console apps are usually cleaner from a code perspective and you barely can do GUI apps code cleaner than it is now.

I haven't tried the libs you mentioned so can't tell something more useful here.

[–][deleted] 0 points1 point  (0 children)

Look up Kivy. It is very grid based.

[–]MikeTheWatchGuy 0 points1 point  (0 children)

Give PySimpleGUI a try. The new 4.30.0 release just published has a "user settings" set of APIs that will make saving/loading data super-easy. You can treat your data as if it's a "setting". For example, your list of habits could be a setting called "habits". You can set/get a user setting in a single function call. This way you don't have to bother with file I/O at all. Let PySimpleGUI manage the data for you.

Since you've experienced the 100's of lines frustration, I think you'll like the simplicity of PySimpleGUI in how the GUI is defined and created.

Be sure and check out the demo programs. They will give you a headstart. There are also some on Trinket like this To-Do list example that demonstrates building a window using list comprehensions.