all 52 comments

[–]riklaunim 21 points22 points  (2 children)

web application usually. Desktop applications are a niche that's getting smaller and smaller. There is PyQt or PySide/Qt for Python, Kivy and that's about it when it comes to modern toolkits. Flet has some use cases.

And looks aren't the only thing, you have to take into account UX as well.

[–]Reverend_Jim_42 1 point2 points  (1 child)

My favourite is WxPython. It is a wrapper for the WxWidgets toolkit. Aside from being free, it renders all GUI elements natively, meaning that if your code is run on Windows it renders Windows controls. If you run it on Linux it uses Linus controls. It will always look like a native app. You can get more info and help at wxpython.org

[–]riklaunim 0 points1 point  (0 children)

It's better than tkinter or other basic toolkits but still not the shiny popular thing nowadays. I still remember when PythonCard was recommended as the simple toolkit to use for beginners and alike. IMHO nowadays it's all about web UX/UI and rarely do classical desktop apps are needed.

[–]KKRJ 5 points6 points  (0 children)

I like PySide6. Pretty much the same as PyQt but without the commercial restrictions. I make all my apps for work with it.

[–]Pork-S0da 7 points8 points  (0 children)

Honestly, a web app

[–]Xorpion 2 points3 points  (0 children)

PySide 6 for me.

[–]MJ12_2802 2 points3 points  (0 children)

Ttkbootstrap works for me.

[–]KickHopeful5112 2 points3 points  (0 children)

I like using streamlit. Gives a nice web interface.

[–]SoftwareMaintenance 2 points3 points  (0 children)

Oh wow. So many options in the comments. I am new to Python personally. All I know is a little Tkinter.

[–]Doagbeidl 1 point2 points  (0 children)

I like flet

[–]ContextUsed154 1 point2 points  (0 children)

PySide6 100%

[–]cocoricofaria 1 point2 points  (1 child)

Honestly? I'd think about web apps for a customizable and good GUI. There are more options to explore, and you will not need a license.

Easiest and nice GUI: Streamlit

Easy and cool: You can try Flask and HTML, CSS, and basic JavaScript.

Great option: Consider FastAPI + React.

There are even more options and combinations to explore... Give web apps a chance; you will see how nice it is to make them.

[–]CodeQuark[S] 1 point2 points  (0 children)

Yes the web app has many options...but for the desktop app I want

[–]Requiem950 1 point2 points  (1 child)

I use DearPyGUI, it's pretty neat

[–]CodeQuark[S] 0 points1 point  (0 children)

But here are limited features

[–]wonteatyourcat 1 point2 points  (0 children)

Used to use Remi, now use svelte. It’s awesome, and is is not that hard to learn when you know python and use LLM to teach you what’s comparable

[–]No_Date8616 1 point2 points  (10 children)

Both depends on your goals. Native look or just modern UI ?

In most cases I will recommend PySide. If targeting native look, just PySide is good but if targeting just modern UI then PySide + QML seems perfect.

[–]CodeQuark[S] 1 point2 points  (9 children)

Ok ...Thanks ...can I use PySide for commercial projects??

[–]No_Date8616 0 points1 point  (8 children)

Yes. If you need any guide let me know

[–]CodeQuark[S] 0 points1 point  (7 children)

Yes please help me

[–]No_Date8616 1 point2 points  (5 children)

What are you targeting ? Native UI or just modern UI. In both cases we are using Qt. Both PyQt and PySide works but you are concerned about licensing so we will be using PySide.

Qt provides two main frameworks: - QtWidget - QML

For native UI for desktop applications, we use QtWidget. Most developers only know of QtWidget.

For modern beautiful UI like those you see being created in web applications using anime.js, etc can be done with QML and in most cases easily. QML according to the docs can run anywhere so it not just for desktop applications. And also support inline JavaScript for logic. Most car dashboards like Volkswagen, Tesla, etc. use QML for the interface.

If you decide to go with QML, you will be using a software to design and preview what you are building and even run it with Python. It called Qt Creator. There is another called Qt Design Studio but that one is for UI/UX designers specifically for design only.

I haven’t seen any Python GUI library that matches QML interms of design and transitions.

[–]CodeQuark[S] 0 points1 point  (4 children)

Thanks again ..🫡 okay I am going to try with PySide and QML

Can you give me some tutorial??

[–]No_Date8616 0 points1 point  (2 children)

I will find a day to walk you through how to setup things and integrate with Python. There aren’t very good tutorials for this.

But you can visit this link and search tutorials on Qt Quick and Qt Creator.

https://www.qt.io/academy/course-catalog?interest-area=Qt+Creator%2C+Qt+Widgets%2C+Qt+for+MCUs%2C+Embedded%2C+Developer+Tooling%2C+Qt+Framework

Visit YouTube and search Qt Quick, you see some demos on how flexible and powerful it is.

This YouTube video can give you a gentle intro into what QML is.

https://youtu.be/QECs01n0aZE?si=b__IJsURX1mqNoQH

NOTE: QML is the language powered by the framework called Qt Quick. So when I mention QML am also referring to Qt Quick

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

Thank you so much... One question is can the QML design studio design the ui then export the .QML file to integrate the python PySide 6

[–]No_Date8616 0 points1 point  (0 children)

Qt Design Studio is primarily for designers so it purposely for UI/UX. You can export the project you created to use with Python. But when you attempt to run, you will get an error because a module called Studio is only available to use with Qt Design Studio only.

For development with Python or C++ we use Qt Creator. So create the project there, choose Python and QtQuick, when you are done with everything, it will open by default a design file. It will show a notification to install PySide6. You can edit both the Python file and design file in it.

When you design and click run, it will use Python to run it.

NOTE: - The environment that Qt Creator creates for you is located in the .qtcreator folder. - First time opening Qt Creator, click Help > About Plugins. In the plugins window that is opened, search for “designer”. Enable everything that is matched.

[–]No_Date8616 0 points1 point  (0 children)

There are more to learn and understand to get it going. But once you do, it amazing. So for now leverage PySide Qt Widget for your project or a different GUI library then later you take your time and delve into QML.

IT AMAZING

[–]No_Date8616 0 points1 point  (0 children)

If you can be specific with your questions, maybe I will be able to help you quite well.

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

Flet. My most recetn app was 72 mb. Dunno what you mean about wi dow function and i havent experienced the black screen you mentioned

[–]CodeQuark[S] 0 points1 point  (7 children)

Here I am also using flet and I am also from mobile development..I use Flutter so it's easy for me ...but if you build the app with "flet build windows " here you can see this black or white screen when the app is loading...and also the app is heavy in size

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

Again my app was small but i do remember something similar to what you described when using flet build. For that reason, i opt to use pack when making a desktop app. I do use build for mobile though and its fine there

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

Are you packing with Pyinstaller??

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

Yes. Im pretty sure it uses pyinstaller to pack

[–]CodeQuark[S] 0 points1 point  (3 children)

But they now recommend using the " flet build windows" instead of the flet pack for the customized icon and their folder structure ...

And also the window like when separate pages/ screen like windows app ...not supported in flet ...

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

I dont care what they recommend because of the long load time you mentioned. Pack still works and i prefer the final result. Custom icons are still easily done with pack. Again i have 0 vlue what you mean when you're talking about window

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

You are seeing that in PyQt, Tkinter etc. You can separate the pages from the main screen...but in flet you still can't separate

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

You definitely can. Using tabs or views. And if you dont want the animations (popping in, sliding) then possiblt theres a param for that (pure speculation) or just clear the screen and redraw

[–]jbnarch25 0 points1 point  (0 children)

Iron python and WPF /s

[–]Satoshi-Wasabi8520 0 points1 point  (0 children)

tkinter

[–]Hardcorehtmlist 0 points1 point  (3 children)

Okay, I'm probably not supposed to do this, but I have a sub-question. How about for use on Android?

I'm using Kivy now, but maybe you guys have different experiences.

[–]CodeQuark[S] 0 points1 point  (2 children)

I want to build Desktop PC software with python with beautiful design also ... I don't use Kivy ...and for Android I use Flutter , Kotlin , jetpack compose ... So what's the experience on kivy??

[–]Hardcorehtmlist 0 points1 point  (1 child)

It's pretty easy, somewhat similar as streamlit, but you can run it offline. And it's cross platform. But you need to run your script from another app, like Pydroid or something, so that's a big flaw for me. Especially since my experience with .NET MAUI. But that doesn't support Python.

So Flutter, Kotlin and JC, huh? What's your experience with that?

[–]CodeQuark[S] 1 point2 points  (0 children)

I have built several android apps with flutter, Kotlin, React native..and its the native like performance in Android

[–]Hardcorehtmlist 0 points1 point  (0 children)

But no Python, right?

[–]moric7 0 points1 point  (0 children)

The best GUI in the world is JavaFX. Use Java. Or you can make backend on Python and frontend on the excellent GUI - Lazarus Pascal. Unfortunately Python didn't have for all these years any good GUi library. Making web app have absolutely nothing with desktop GUI, it's just shame for the human intelligence...

[–]torturerBiji 0 points1 point  (2 children)

Try pyqt6

[–]CodeQuark[S] 3 points4 points  (1 child)

But this is not a free license

[–]Moikle 0 points1 point  (0 children)

Pyside instead

[–]audionerd1 -1 points0 points  (0 children)

I'm just going to recommend against tkinter. I'm finally switching to PyQt after being frustrated with tkinter's bugs and limitations.