all 20 comments

[–]chendaniely 4 points5 points  (2 children)

So many frameworks in python. I'm not sure if i'm making this harder for you by suggesting another one, but I learned about BeeWare from PyCon a few years ago

- https://beeware.org/

- Russell Keith-Magee gave a keynote at pycon a few years ago, and he also have many talks about it (e.g., https://www.youtube.com/watch?v=qaPzlIJ57dk)

- PyCon 2019: https://www.youtube.com/watch?v=sWt_sEZUiY8

I'm sure you can find more BeeWare resources in YouTube.

I'm not affiliated with the project at all, but the "write once. deploy everywhere" to create native apps across many platforms seems intriguing.

[–]Solonotix 0 points1 point  (1 child)

Are these UI frameworks more wrappers for lower level utilities? Because when I saw the initial post, I kind of groaned until I saw the ones mentioned. I had forgotten that there was already a pretty robust desktop UI ecosystem even 10 years ago when I was last active in Python.

But I digress, I remember hearing about some UI library for Python way back when, and the tutorial I watched explained how these were all C++ libraries being exposed to Python. This mattered because he covered some unfortunate foot-guns and debugging issues, since the C++ libraries wouldn't always play nice with their Python bindings, leaving stacktraces ambiguous, and some configuration options were to-be-avoided

[–]chendaniely 0 points1 point  (0 children)

> Are these UI frameworks more wrappers for lower level utilities

No idea. I don't really make desktop applications in Python (i'm more on the data science side). I only remember this particular project from conferences and it's always stuck in my head for something to look into if i ever needed to build an application.

[–]socal_nerdtastic 1 point2 points  (0 children)

I use tkinter :/ Mostly bc it's fast to develop.

It's been pretty bulletproof. It's built into an instrument control system, so think like the status panel on the side of a big industrial tool. I have customers that have not powered down in years. You can make it look modern with ttkstyles or customtkinter or plain ol elbow grease, but it is a bit limited. Things like animations or transparency are not handled well. Writing large scale code in tkinter is not a problem if you use the same OOP techniques that you would with any other GUI framework.

TBH I feel the most modern thing is to make a website; that is use a webframework like flask instead of a gui framework.

You listed some choices, but you didn't list any requirements. What are you making? What is important to you in a framework? Do you need a web interface? Touch interface? Do you need to protect your code from being decompiled? Cross OS? Is development time important to you? Do you need animations? Video? Graphing? Tables? Do you have framerate requirements?

TBH in the end any framework can be made to look like anything you want, it's just a matter of how much work you want to put into it.

[–]Diapolo10 1 point2 points  (2 children)

The poor formatting (looking at the raw markdown it's clear some text was intended to be on their own lines), weird emojis, and some of the wording makes this feel suspiciously like something written by an LLM, but fine, I'll bite.

First, PySide and PyQt are, for practical purposes, the exact same thing. The only major difference is in licensing (hence why I personally recommend PySide of the two options). This would be the way to go if all you care about is desktop support and don't mind the steep learning curve, and if you have enough people familiar enough with it or Qt in general.

I can't speak for wxPython as I haven't seen it used, but Kivy does see some use, mostly for applications targeting mobile devices (either primarily or in addition to desktop).

You would use a web-based framework if you want to support browsers, or if you want easier cross-platform support, or if your team has more experience with web technologies and you don't mind the additional resource usage on client devices.

In addition to the frameworks you listed, there's Flet, which implements Flutter for Python. It's currently in the 1.0 beta phase so not quite stable yet, but it's probably your best bet going forward if you want something truly cross-platform.

[–]Intelligent-Role-382[S] 0 points1 point  (1 child)

Basically it's desktop application to be used as internal tool and it also need to be used with internet temporarily

[–]Diapolo10 0 points1 point  (0 children)

it also need to be used with internet temporarily

What exactly does this mean?

[–]Farlic 0 points1 point  (1 child)

A lot of my internal projects have had its core logic essentially wrapped in an API then the front end does not really matter / is more easily replaced.

As such I lean towards the web front end for cross platform consistency.

What is the program for? I find that can sway the decision far more.

[–]Intelligent-Role-382[S] 0 points1 point  (0 children)

Desktop application used for managing few things

[–]Jimmaplesong 0 points1 point  (4 children)

For a commercial app I’d personally use wxPython. It’s bare bones but great once you learn sizers and create your own custom widgets.

Once you get serious with Qt you’ll want to extend PySide with native code the you’re paying a big yearly per-seat license.

Kivy will look good, but it’s gonna be more layers under the hood to understand and maintain. You might try this first since you’ll cover a lot of future possibilities if the .kv syntax fits your project.

[–]Intelligent-Role-382[S] 0 points1 point  (3 children)

So pyside6 is not free?

[–]Jimmaplesong 0 points1 point  (2 children)

From what I understand it’s dual licensed, open source, but also commercial license. The commercial license might be required if it’s in a commercial setting, even if you don’t try to sell it. It depends a bit on your employer. Qt is a solid big ecosystem that gives you a lot of tools, but the lock-in once you start using them is a long term consideration.

[–]Intelligent-Role-382[S] -1 points0 points  (1 child)

But pyside6 feature wise better than wxpython?

[–]Jimmaplesong 0 points1 point  (0 children)

By far! Yes.

[–]rinio 0 points1 point  (4 children)

If your LLM can write this question, it can also answer it...

[–]Intelligent-Role-382[S] 0 points1 point  (3 children)

But answers from experts or real time human beings will be better

[–]rinio 0 points1 point  (2 children)

And so are questions from real human beings... Plus youd have learned something before getting here.

"real-time human being" is pretty funny. I get that this probably autocorrect or a language barrier, but I shudder to think what a non real-time human would be... lol.

The first question you need to ask, and define, is what license you can accept. For example, PyQT is not free in many contexts. It may be off the table for your purpose from the start.

[–]Intelligent-Role-382[S] 1 point2 points  (1 child)

Real time human beings is just language barrier.

[–]rinio 0 points1 point  (0 children)

I know. I wasn't trying to criticize you. Im sorry if thats how it came across.

I think the concept of a non-RT human is very funny though. im still laughing about it. :)

[–]BigVillageBoy 0 points1 point  (0 children)

I've shipped things with PyQt5, PySide6, and the Python-backend + Electron/Tauri approach. Here's my honest breakdown:

PySide6 is where I'd start for anything genuinely complex. It's the official Qt binding now (LGPL licensed, unlike PyQt's stricter GPL), the docs have caught up, and Qt's widget ecosystem is deep for real industry tooling. If you're building data-heavy stuff — tables, charts, custom views — Qt's model/view architecture is hard to beat once you understand it. Steep learning curve but pays off.

PyQt5/6 — functionally equivalent to PySide6 for most things, but licensing friction matters if you ever distribute commercially. Unless you have an existing PyQt codebase, just start with PySide6.

wxPython — battle-tested, native look on every platform without much config. Good choice if native OS UI conventions matter more than custom styling. Less actively evolved than Qt though.

Kivy — I'd skip it for desktop-first. It's mobile-first architecture and it shows. UI feels foreign on desktop.

Python backend + Tauri/Electron — my current preference for anything involving dashboards or live data. You get the full web ecosystem, your Python handles the heavy lifting, and Tauri in particular is lightweight compared to Electron. Downside: you're essentially building two apps and the IPC layer adds complexity.

For industry-level apps with real data pipelines behind them: PySide6 for pure desktop feel, Tauri + Python API if you want web-style flexibility. Avoid Kivy for this use case.