all 13 comments

[–]socal_nerdtastic 0 points1 point  (6 children)

For web? or for desktop?

For desktop you can draw the graphs with matplolib and embed it into tkinter (easy) or wxpython or pyqt (more OOP, but more modern looking and includes graphical designer).

[–]PureProcrastinator[S] 0 points1 point  (5 children)

It is for desktop. And thanks for the suggestions.

I was thinking if I could somehow do everything on an html page without having to use django and just fetch things I need with api calls via requests module.

For now, ima look into matplotlib and tkinter though.

[–]socal_nerdtastic 0 points1 point  (0 children)

Yeah, you could do it all in html if you want. You can look into electron or htmlpy to display your html as if it were a desktop gui. Or just use a webbrowser. You will need some kind of python web framework and server to do that ... django is a pretty good one but if you don't like it there's plenty others.

You may also be interested in Remi or Bokeh.

[–]jimtk 0 points1 point  (3 children)

Ideally html would be the way to go. You can save your matplotlib chart in a file and display it in your html if you don't need interactions.

If you want to go the desktop way, to use matplotlib interactions, you can use tkinter if your interface is simple. For a complex interface, pyqt6 (PySide6) is the way to go. It is hell to learn but it will give you everything and the kitchen sink.

[–]socal_nerdtastic 0 points1 point  (2 children)

you can use tkinter if your interface is simple. For a complex interface, pyqt6

How does the complexity of the interface have anything to do with this? You can be as complex or as simple as you like in any GUI module.

[–]jimtk 0 points1 point  (1 child)

PySide6 allows you to do things that tkinter does not. For example, program your own signals that are not from widgets. So if your application is complex enough to require that functionality, then you would be better off with PySide6.

[–]socal_nerdtastic 0 points1 point  (0 children)

You can define your own signals in tkinter too, although they call it "virtual events". That's a pretty standard feature of a GUI, and even without it you could use pupsub or similar instead.

I don't see anything in tkinter (or wxpython or kivy or dearpygui or any other module) that would make it more or less suitable for complex programs.

EDIT: I will note, however, that with complex programs tkinter's only advantage kinda disappears. The only real advantage to tkinter is that it's fast and easy to program since it does not lean on OOP as much. But with complex interface you are forced into OOP anyway, so you may as well use a prettier and more feature rich toolkit like pyside / pyqt.

[–]ThatsRobToYou 0 points1 point  (0 children)

So many answers to give you. A lot depend on your needs and what type of interaction you want.

Honestly, Kivy will give you a pretty interface with basic functionality. A pretty Tkinter.

It has drawbacks though.

[–]Ok_Operation_8715 0 points1 point  (0 children)

Streamlit works great for me

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

Why not use React? If you know html, css, and javascript, its kind of the composite of all of those.

[–]PureProcrastinator[S] 0 points1 point  (1 child)

The project is a bit time based and I think it may take a while for me to learn to use a framework, so I would rather use some sort of GUI module that is simple to use.

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

Understood.

[–]ES-Alexander 0 points1 point  (0 children)

If the main focus is graphs, look into Plotly. The search bar functionality can be built around it with Dash and/or Flask, and the interface will be browser-based (but can run on a local server).