Best gui for local client app?
Posted by robbo2020a@reddit | Python | View on Reddit | 85 comments
I'm writing an application which is local. No server. I'm using python and I'm wanting to know people's opinions on the best gui to use.
So far I've used tkinter but it feels clunky and heavy, like it's from the early 2000s.
Can anyone recommend something better for modern looking stuff? Maybe I'm using tkinter wrong?
Any advice would be appreciated.
Horror-Blueberry-519@reddit
I just heard about beeware, it sounds promising, it is a tough choice between beeware and flet for my case for a cross platform app.
MeroLegend4@reddit
Pyqt/pyside 6
pylessard@reddit
I suggest to prefer PySide over PyQt. PySide is maintained by the QT company and is more friendly regarding type hints. If you plan on using mypy to check your code, you will have extra useless work to do with PyQt
Select-Dependent206@reddit
I am using PySide6. However making it work with Altair Visualization is a pain. QWebViewWidget is just not working properly.
XColdArtzX@reddit
Basically that. I've been using PySimpleGUI but switched to PySide6 after the license change. PySide6 in comparison looks way more "modern" especially if you use stylesheets and edit the look how you want.
david0aloha@reddit
How do you find it in comparison to PySimpleGUI (licensing issues aside)?
I only learned about the licensing fiasco with SimpleGUI recently. TBH I think making their most recent edition private is fine. That's not the part that upset most people.
The shitty part of it is that they purged their git history and old releases. It seemed like they had a path forward for making a free community edition and a paid professional edition, but instead they threw their open source collaborators under the bus and purged all open source releases, plus their git history prior to the license change. Luckily, some of the open source contributes had the latest source with an open source license and made a new branch with full git history under FreeSimpleGUI.
XRaySpex0@reddit
FreeSimpleGUI is an open-source fork :)
sonobanana33@reddit
I second this.
desijays@reddit
Can it be used commercially?
nikomo@reddit
You can both use commercially, but PySide is more to some people's liking since it's LGPL instead of GPL.
_Answer_42@reddit
Qt is LGPL too
wdroz@reddit
For non-web based UI, I recommend DearPyGui.
For web-based UI NiceGUI. There is also the recently released Mesop that I would like to try, but I didn't had the time yet.
For fun, you can also use textual, they added web support not long ago.
Select-Dependent206@reddit
Tried NiceGUI, unfortunately it does not support Altair Visualization library yet. I am keeping an eye on their development. Once Atlair supported, with their local app interface, it will be a no brainer!
unski_ukuli@reddit
I wouldn’t recomment dearpygui. It looks good and is easy to use, but at least when I last checked, it was redrawing the whole gui on every frame with no way to change that behaviour. It’s a wrapper for dearimgui which is not really ment for standalone applications, but for gamedevelopement debug guis.
Valuable-Benefit-524@reddit
While that’s true, in practice it’s really not an intermediate GUI since DearPyGUI is handling the redraw/persistence. It’s also exceptionally performant. I use it in a real-time scientific GUI, plotting about ~150,000,000 points / second without impact to the application itself. It has its fair share of warts, and ideally I’ll migrate directly to C++ for release, but it’s pretty easy to get a snappy, beautiful GUI.
unski_ukuli@reddit
Yeah I mean it works for that very well as your usecase is not too dissimiliar from a usage in game engines. Should have been more spesific, and say that it is not suitable for anything that doesn’t need to update constantly.
HamsterWoods@reddit
NiceGUI now has an Electron-like capability that allows it to operate as a desktop app.
Valuable-Benefit-524@reddit
Fair warning, dearpygui is in a state of dubious maintenance/trajectory. I use it, and love its performance, but I believe the focus is on the next iteration (which will no longer use Dear ImGui).
Board_Game_Nut@reddit
Upvote for textual. It's fantastic! Easy to use.
el_extrano@reddit
I really don't like their take on defaults for a text based app. The default widgets waste a lot of space going after that "web 3.0" aesthetic, and I just don't think it looks nice in the terminal.
That said, it's entirely possible to re-style things how you want using the CSS, it's just a lot of work to get a traditional, minimalist feel. Personally I think that should be the other way around.
Overall it's a really nice library!
purtle70@reddit
I got cross with how tricky the ones I tried were (though lots is new to me here in the comments) - eventually I went for Django, even though I only ever use it locally. It’s the front end to a db, so it was very easy to get a ready-made example and tinker with it.
Artistic-Ad9079@reddit
Try FREESIMPLEGUI It's free version of pysimplegui after changing there license.
recyclinghelps@reddit
pip install customtkinter, then have a look at this guys you tube channel
https://www.youtube.com/playlist?list=PLfZw_tZWahjxJl81b1S-vYQwHs_9ZT77f
Aromatic-Net-3777@reddit
pywebview + react 🔥
hello_friendssss@reddit
Plotly Dash?
marsupiq@reddit
It’s not really a good choice for anything other than dashboards (or really for anything…). Yeah, technically you can do a lot, but IMHO it’s a pain to work with.
hello_friendssss@reddit
thats interesting, anything in particular you dont like about it? also how would you differentiate a dashboard from an app out of interest? i'm a noob :P
Top-Tap4163@reddit
Simian. www.simiansuite.com or r/simianwebapps.
Free for local apps. Can be deployed, but that is paid.
Pure Python, has a Builder and based on Angular.
marsupiq@reddit
Feels obvious, but since no-one is spelling it out: There is the option to write the UI as a JavaScript/TypeScript app using your favorite framework (I’m probably old school, but for me that’s React). And if you don’t want to see the browser, use a web view (there are many ways to do this).
Not saying I recommend this. But I think it should be mentioned.
JamzTyson@reddit
It's clunky and light. In terms of size on disk, it may be the lightest GUI toolkit for Python.
There are ways to make tkinter look more modern, such as CustomTkinter, or PySimpleGUI (a commercial wrapper around Tkinter).
Personally I'm happy using Tkinter and ttk.
kckr@reddit
Pywebview is pretty cool. You can use JavaScript html with python backend.
oclafloptson@reddit
Flet is my current favorite. It's a flutter wrapper that lets you build SPAs using only Python.
Pros:
Build for web, Windows, Linux, Mac or Android.
Modern feeling with incredibly easy to master animations.
Free use Apache 2.0 license
Cons:
disk space intensive if building for anything but web, requiring additional applications like Android studio or visual studio and related toolkits.
Most Flet commands use git to execute, requiring a data connection.
No mass adoption and seemingly just the one developer, although development is ongoing and there are open source contributors.
dnskjd@reddit
Dash
Impossible_Web7873@reddit
PyQt
hotchiwawa@reddit
Make Ncurses great again ‼😌
bv22crdude@reddit
Has anyone used Tkinter-DesignerTkinter-Designer? Theoretically, you create a design in Figma, and it will generate the code for you.
unapologeticjerk@reddit
I have. I do a lot of customtkinter stuff and that designer is prominent in that ecosystem because that developer also works on some popular CTk or adjacent stuff. It's very primitive, even if you use and like Figma (I don't). The idea is solid and you can get yourself a very basic UI with buttons and labels on it, but that was about it. Pygubu had much better widget support and was more advanced, but of course doesn't use Figma and requires some tkinter understanding even though it's a visual designer.
bv22crdude@reddit
Thanks
ebits21@reddit
Before giving up on tkinter, you could try ttk bootstrap or a theme like Sun Valley.
Scared_Palpitation_6@reddit
I like customtkinter
MathResponsibly@reddit
Yeah, the default tkinter theme is pretty outdated looking, but there are some really nice ones. TK gives you a simple gui at the expense of less flexibility. QT gives you a more flexible GUI, but the code complexity is noticeably higher.
What you should use depends on your application - are you just displaying some basic widgets / buttons? TK is probably a good choice.
Do you need a data driven gui that has data grids, or tree views, and you can customize everything to exactly how it needs to be, and can spend more time on the code? Then QT is probably the right choice
jst_cur10us@reddit
Ditto. If you're already familiar with tinter, ttkbootstrap works pretty much the same and looks modern and nice.
Good tutorial on YouTube for it: https://youtube.com/playlist?list=PLfZw_tZWahjxz8pbtxqjNQvuNPZEM25Qm&si=zsGPkzXTq9c05nF-
samuelmesa@reddit
Very interesting, easy and beautiful. Thank you very much for sharing
bunchedupwalrus@reddit
Its browser based but I use Dash for almost everything lmao
Kaaletram@reddit
I haven't seen this mentioned yet, but I like using wxPython. It's syntax is similar to Pyqt
Stotters@reddit
Seconded.
_Denizen_@reddit
I've used wxPython, it's also free whilst PyQT is not free for businesses
Kaaletram@reddit
Which is a huge plus in my opinion. This discussion is like choosing your favorite flavor of ice cream, there almost as many different flavors as there are devs
_Denizen_@reddit
Very true, you can only really pick on by comparing the advertised features to your required features and then filtering the best matches by cost and applicability to your other projects etc etc
Game-of-pwns@reddit
argparse
duglee@reddit
PySimpleGUI. For a local client, it is a fully featured front end for tkinter. Works great. Easy to use. I have been using it for 5+ years with no major issues.
ok_computer@reddit
They did a pretty weird license rug pull shortly after I discovered this lib that left a bad vibe. I do not think it is as good vs other gui/tui apps to jump on a difficult to distribute lib.
https://docs.pysimplegui.com/en/latest/documentation/installing_licensing/license_keys/
el_extrano@reddit
For what it's worth, someone made a fork of the codebase from right before the License change. (FreeSimpleGUI) It's even being maintained iirc.
Personally I'm not using it, since I'm fine with tkinter for simple apps.
ok_computer@reddit
Yep I like tkinker from what I’ve made before if a user doesn’t like shell scripts.
Strong-Mud199@reddit
Upvote - PySimpleGUI is nice - He provides many, many sample programs that can be quickly modified to your particular needs - Super useful. But like all the other programs mentioned, it does take several days of solid study to really understand.
pacopac25@reddit
Gooeypie.dev
robertpro01@reddit
Kivy with kivy MD
Rockflagandeeeagle@reddit
Streamlit.
BostonBaggins@reddit
Streamlit for quick dashboarding and visuals not great for gui
rzet@reddit
yep super easy to setup simple stuff on web.
MonitorAway2394@reddit
PyQt6 or PySide6 it's lovely :D
Next-Experience@reddit
Briefcase + toga
FoodAccurate5414@reddit
Flet
jeanschoen@reddit
Panel
RightAd919@reddit
Give flet a try. https://flet.dev
luudanmatcuoi@reddit
Pysimplegui, yep, it's quick and simple to code, to run.
fatbiker406@reddit
Check out Kivy -- it's written in Python and it's super easy to make custom controls, is cross-platform, open source, and the performance is good too. The KvDeveloper project is a good place to start: https://github.com/Novfensec/kvdeveloper
TheNiamorro@reddit
Pyside6 + Qtquick
TonyBandeira@reddit
Pyside6 + qtawesome (for icons) https://github.com/spyder-ide/qtawesome
biotech997@reddit
I’ve been playing around with Tkinter and made the switch to PyQT recently
Top_Ad6038@reddit
Custom Tkinter
marr75@reddit
dataguzzler@reddit
I've tested dozens of the various gui packages for Python, it really depends on the project requirements. Some are better at certain tasks than others. Tkinter comes bundled with Python and is great for simpler interface requirements. For a modern gui with lots of examples online you could try using pyqt5 or pyqt6. pyqt6 has tons of components and really all you would need for building a nice gui. I use it for lots of projects including custom web browsers.
TSM-@reddit
PyQt again l, or PySide, which is an equivalent wrapper of Qt and is more pythonic. Use some templates from github. ChatGPT is decent at setting up boilerplate.
You may also consider using Qt Designer. It is a drag and drop UI builder - you put buttons, layout grids, tabs, tool tips, progress bars, file edit options menu bar, etc. Then you import it and connect those buttons to python logic. Not everything can be done in designer, but you can get a basic UI started and extend it from there.
A standalone version without needing to install Qt (like 8GB) is here: https://build-system.fman.io/qt-designer-download
Cod3Blaze@reddit
PyQt, PySide6, Kivy
Emergency_Will1356@reddit
I really like PyQT, this is my recommendation
Machinesia@reddit
You could give Textual a go. It's a TUI (terminal GUI kind of). Well built, easy to use, extremely well documented, though fairly new.
ganesh_k9@reddit
You could try these out and see what works best for you: 1. Since you already know tkinter, trye customtkinter, looks a lot better 2: gooeypie 3: freesimplegui (Open source version of PySimpleGUI)
ChanceG1955@reddit
Try Reflex - https://reflex.dev/ . Or Flet - https://flet.dev/ . My fav is PySide2/Qt
BadSmash4@reddit
In addition to PyQT which is also my recommendation, there is also a doctored-up tkinter library called customtkinter that looks a hell of a lot better and more modern than raw tkinter. Go for PyQT first, though.
ogMasterPloKoon@reddit
Take a look at Flet.
FairLight8@reddit
NiceGUI is all you want, if you need something that works, quick and easy. If you want more customization or advanced features, yeah, stick to the other answers.
terremoth@reddit
PyQT
veik64@reddit
Pyqt
haasvacado@reddit
Nicegui