Is kivy worth it?
Posted by Ok_Degree_2743@reddit | Python | View on Reddit | 39 comments
I have been learning kivy for the past 2 weeks and i dont have a straight mind on deciding to use it for a major project like a social media app...the features are cool tho,and it allows me to flow on other platforms easily...lemme know ur comments
JavierJV@reddit
Pyqt or PySide seems to me to be a more "professional" solution.
marsupiq@reddit
To be honest, I couldn’t name an actual project that uses Qt and is widely used. I’m only seeing it in people’s pet projects. The world only knows browser based UIs. Except perhaps for a small nieche with special performance requirements, where desktop apps still play a role. But when that’s the case, Python is out anyway.
JavierJV@reddit
You are right on one point: Electron has won the desktop GUI market for a while now. But Qt is still widely used to build GUIs, for example: KDE, if not on top of Python, but it doesn't have a small audience.
marsupiq@reddit
Why do you want to develop an app with Python? Is it just because you know it well/like it, or because you think it’s the right tool for the job?
Most likely it’s not. For serious projects, that should always be a criterion.
Ok_Degree_2743@reddit (OP)
Thank you...can you suggest an option?
marsupiq@reddit
For an app, I would probably choose React Native. Although at my company, all departments have an iOS team, an Android team and a web team which develop in sync. I was told this is the way it is because you cannot provide a great UX unless you optimize heavily for the respective platforms.
For a web App (either as a browser app or via Electron or similar), I would go with React, but there are also many newer frameworks that people seem to like (like Elixir).
WJMazepas@reddit
If you already know Python and want to have a GUI for a small project, then yeah, it's fine. especially if it is for desktop
But for Android, it is best to use something else. Maybe for a toy project, but it's not supported as well as Flutter/React Native/Kotlin for it
bkstr@reddit
what if you want to release on iOS and android?
WJMazepas@reddit
You can use a cross-platform framework to build for both at the same time.
The two most famous options are Flutter and React Native. There's also .NET MAUI for it if you want to use C#, but support is still behind the other two
You can also make a website with any JS framework of your choice and then make a PWA(Progressive Web App) with it.
Other than that, it is building an app with the native languages/frameworks for each system. Meaning Swift on iOS and Kotlin on Android.
But building an app with Python for iOS can be made with Kivy or with others, but again, it really isn't all that well made for that.
phlummox@reddit
Seconded. Fine for desktop, over-complex and under documented for Android. Though if OP wants to get something cross-platform working for both mobile and desktop and happens to know a little Rust, then Tauri is one interesting option.
Python-ModTeam@reddit
Hi there, from the /r/Python mods.
We have removed this post as it is not suited to the /r/Python subreddit proper, however it should be very appropriate for our sister subreddit /r/LearnPython or for the r/Python discord: https://discord.gg/python.
The reason for the removal is that /r/Python is dedicated to discussion of Python news, projects, uses and debates. It is not designed to act as Q&A or FAQ board. The regular community is not a fan of "how do I..." questions, so you will not get the best responses over here.
On /r/LearnPython the community and the r/Python discord are actively expecting questions and are looking to help. You can expect far more understanding, encouraging and insightful responses over there. No matter what level of question you have, if you are looking for help with Python, you should get good answers. Make sure to check out the rules for both places.
Warm regards, and best of luck with your Pythoneering!
Kengo360@reddit
Experienced Kivy dev here. Yea Kivy is worth it for android. You can go ahead and ignore all noises about Kivy only good for building small prototype projects. I've built food delivery app, car park request that looks like Uber and makes use of a map and sends and receive gps coordinates using firebase in realtime, built an ai chatting app with kivy. The UI looks good (makes use of material design). The people saying that you can't haven't gone deep or gave up immediately they discovered something is not working or okay for them. I'm not saying that kivy is the best, I'm only saying "YES YOU CAN BUILD SOCIAL MEDIA APP WITH KIVY IF YOU WANT TO", call me anytime any day to defend this statement and I will provide you with proof and evidence. I'm sick and tired of people who have little to zero experience on how KIVY works, saying what they haven't tried in their entire life.
Can you get a Job with Kivy? That's not guaranteed in big tech companies but as a freelancer, sure you can if you are good at it. You're not marketing the tool, you're marketing your skill. Ignore the noise and do what you want to do.
UncleJoshPDX@reddit
That's good to hear. I've played with it but I've always had an idea that it wasn't easy to make an Android app, and as a windows/android person, I would have no idea how to port things to the Mac/Linux world.
Kengo360@reddit
I would be frank here, when I started out with building android apps with kivy, the experience was very exhausting. When I got to understand how really buildozer works, It became way more easier for me to build my apps down to android. I'm currently more focused on building android Apps since then. I could also easily integrate building apks with CI. The tricks are in the docs, which few people read. I wish devs spare some time to read the manuals before starting out.
kinygos@reddit
I second this…I’ve built a card game app with animation and sound effects that runs on iOS and Android with no drama. It’s also really straightforward to integrate with various APIs. For example, my app is integrated with the Apple Game Centre.
kealystudio@reddit
I love Python and I wanted to build mobile apps.
But I've never touched a line of Kivy because using Python to build a mobile app UI sounds completely insane, like using a power saw to crochet a wooly hat.
I use Flutterflow to build UIs and create my own APIs to power them, using FastAPI.
PsychologicalFactor1@reddit
After used kivy to create a smartphone application, for personl use, and then recreating the same app using kotlin, I've come to the conclusion that it's more advantageous to dedicate yourself to studying kotlin from scratch than trying to force yourself to put python everywhere.
willowdene@reddit
I've used kivy/kivyMD to build a few personal apps. I like the fact it works on multi platforms. Also the build, and debug, process is made easy using buildozer. Personally, I think it's worth experimenting with for a while longer.
sathlerds@reddit
Flet is better than kivy. I started with kivy and got frustrated.
https://flet.dev/
PSP_Joker@reddit
I tired kivy once since I had a python app on my pc that I wanted on mobile. I could not wrap my head around Flutter.
It was easier to derust in Java and program it for Android than it was to maintain the app. Updates were so bad and the app was just a very tiny personal project, so I think: No, it is not worth it.
Android "native" languages will take you way further with way less headaches.
jgengr@reddit
Unfortunately python is not widely used for UI development in industry. You're better off building web apps with Django. That's a more marketable skill.
PossibilityTasty@reddit
This sound a bit like Django is better for UI development than Python. Which would be a strange argument.
Sweet_Computer_7116@reddit
The idea: 🛫🛫🛫🛫
Your head: 🤔
No_Indication_1238@reddit
More like HTML and CSS are better for UI development and more widely accepted industry wise than whatever GUI framework Python has. Spin a Django app, map whatever functions you have to a UI made with HTML and CSS and be done with it. You could even bundle it into a self contained package.
godson_g@reddit
Depends on target platform, if you want to publish on mobiles then Kivy .
If focused on desktop only then you are better of with PySide or wxPython for native look and feel abundance of widgets.
Gugalcrom123@reddit
You'd better learn HTML/CSS/JS as some others say. If you want a desktop GUI I really enjoy GTK+3, it's got this design program called Glade which generates an XML with your interface and you just get to define the actions in Python (or any supported language)
Kryt0s@reddit
Check out https://flet.dev instead.
Mr-Rept1l1an@reddit
For me it was just a waste of time.
dominiquec@reddit
As an alternative, try https://beeware.org/ and its GUI component Toga.
I've found it to be a much smoother experience than Kivy for packaging for Linux and Android.
However, don't expect anything along the quality and polish of a Flutter or React.
I feel Beeware/Toga is better for quick and functional prototypes for Python developers who don't want to fiddle around with another language.
ODBC_Error@reddit
Not at all. I'd rather learn flutter.
ManyInterests@reddit
It's really useful because it's one of the few ways you can actually get Python projects on mobile devices. If that's your target and you don't want to use any other langauge, it's not a bad choice.
That said, mobile apps aren't really a strength of Python. If you have a major (read: large, for-profit) project, you may want to consider hiring a developer who already knows the languages and UI kits that work best on mobile platforms.
steamy-fox@reddit
This!
I wish Kivy/KivyMD was more popular but it's not. It does look nice and you get an android app in Python but there is not much support and a very small community.
I've used it for a few toy projects, but beyond that I switch to things like Django, nice GUI etc
dj2ball@reddit
Surprised no one mentioned NiceGUI yet.
chrisdo023@reddit
I would use a library called Eel. You get to program in HTML/CSS/JS for the frontend, while the backend is in Python.
kkawabat@reddit
I second learning html/css/javascript, it really expanded my capacity for building gui and it's just more applicable to learn javascript than kivy even though i find kivy really neat
edimaudo@reddit
avoid kivy.
g5becks@reddit
Just use flutter. Dart ain’t that bad.
ChimpanzeChapado@reddit
Nah
kubinka0505@reddit
no