Kivy – a cross platform Python UI framework
Kivy 2.3.0, an open-source Python framework, simplifies cross-platform app development. Released under the MIT License, it supports Android, iOS, Linux, macOS, and Windows. Users can contribute to its development and engage with the community.
Read original articleKivy is an open-source Python framework designed for developing GUI applications. The latest release, Kivy 2.3.0, allows developers to create visually appealing cross-platform apps effortlessly. With support for Android, iOS, Linux, macOS, and Windows, Kivy enables easy deployment with a single codebase. Released under the MIT License, Kivy is free to use and is actively maintained by a professional team. Companies and individuals utilize Kivy for various projects, with contributions from organizations and backers ensuring its open-source status. Interested parties can support Kivy through donations starting at $5, contributing to the framework's continuous development and community maintenance. For assistance or collaboration, users can engage with the Kivy community via Discord, the kivy-users group, or access the source code on GitHub.
Related
Komorebi: Tiling Window Management for Windows
The "komorebi" project is a tiling window manager for Windows, extending Microsoft's Desktop Window Manager. It offers CLI control, installation guides, configuration details, and a supportive community for contributions and discussions.
Open Sourcing Kinopio
The creator of Kinopio, a thinking canvas app, open sources the kinopio-client app on its 5th anniversary. Users can now run, modify, and enhance the lightweight app (~220kb) locally or on the kinopio-server. This move aims to foster community contributions despite potential risks.
Show HN: ViperIDE – An Innovative MicroPython IDE for Web and Mobile
ViperIDE is a modern MicroPython IDE for web and mobile platforms. It offers features like no installation required, cross-platform connectivity, file editor, package manager, terminal/REPL, and device support. Explore on ViperIDE's website or GitHub.
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Ttkbootstrap: Modern theme and widgets for Python tkinter
The "ttkbootstrap" project on GitHub enhances tkinter with modern flat style themes like Bootstrap. It offers various themes, widget styles, new widgets, and a Theme Creator for personalized themes. Find more on GitHub.
For UI there is https://github.com/kivymd/KivyMD for Material design on top of Kivy.
And the team is nice (I've met some of them at PyCon or FOSDEM).
The framework is pleasant to use, and there is a descriptive language, kv, which is really great.
Cross compiling may be painful though (I did it for Android) and the app loading time is a bit long, but it's working.
Some things may be missing in comparison to big frameworks such as Qt, there is no WebView for instance, and accessibility is unfortunately not as good.
It's overall a very good project and it's a pity that it's not more known and used.
No mentions on the site at all. I only found this https://github.com/kivy/kivy/issues/8596 so seems like not yet implemented.
Meaning Kivy is not yet a good choice for user-facing apps. It is so frustrating to see all the new UI frameworks and they fall apart if you just ask about accessibility features that should be absolute standard in 2024.
If you got as lost as me, the Gallery is accessible via a link at the top: https://kivy.org/gallery.html
None of the screenshots under the gallery are compelling or even acceptable these days.
Electron thus far seems to be the king of “desktop” ui.
It's powered by Flutter behind the scenes and familiar enough so that you can translate most things from Flutter/Dart tutorials to Flet.
I haven't used it and I'll most likely never will (Flutter developer trying to pivot to real native development), but it seems to have an active community, and in theory, it enables developers to write relatively nice looking apps with a very popular language.
RIP Bram.
[1]: https://github.com/vim/vim/blob/master/runtime/syntax/kivy.v...
From a packaging point of view Kivy is not great.
Building data-centric cross-platform apps while staying (mostly [1]) within a single language ecosystem should be less friction and overhead than juggling multiple universes via API's, different runtimes and what not.
What kind of apps would benefit from this "single language" approach? For sure not the more open ended, exploratory data science type tasks. These are better delivered via notebook workflows, which, besides flexibility, enable better reproducibility and auditing. Also probably nothing that requires high performance interactive graphics.
But while not solving all UI problems for all people, there should be still plenty of relevant use cases where simplicity and fast prototyping give Kivy an edge when the task is to make algorithms and related tools available to non-technical users.
[1] ofcourse the actual number crunching might be done by yet another layer (typically C/C++) but that layer is essentially hidden from the data orchestation and UI integration that would be the Kivy app focus.
It feels like it's at the wrong level of abstraction for... basically everything.
The Pong game demo is an example of this: if you're writing a Pong clone (or most video games) where you're going to be operating on a canvas, you don't need all the widget infrastructure that Kivy offers--you're better-served by something like PyGame.
On the other hand, if you want to build a UI using standard widgets, the widgets they provide out of the box aren't particularly fully-featured or even good--you end up doing a lot of hand-coding of functionality that could be included, and the defaults aren't particularly desirable, so you end up having to configure a lot of, for example, visual display settings.
As another user pointed out, their default widgets don't support accessibility meaningfully, and there are many other features, such as dark mode/color scheme support, which modern users expect and which you'll have to code yourself. Realistically, a lot of clients aren't going to give you funding for accessibility features, so the defaults are what most projects will end up with, and if it's me developing it, I'm doing accessibility on my own time, so I'd want this to be configuring what's largely already there, as opposed to what Kivy has: implementing it from scratch. In 2024 I'd view failing to support accessibility reasonably out of the box, as almost a moral failing, and certainly this is enough to discount Kivy from being used for any product intended to go to production.
There IS a fairly vibrant ecosystem of 3rd-party widgets (flowers; there's a "garden" metaphor in their branding for the ecosystem). But this comes with all the problems of a 3rd-party ecosystem: Kivy itself is probably large enough that it won't become abandonware in the forseeable future, but 3rd-party projects aren't, and there are large security and reliability risks to pulling in a bunch of small packages maintained by developers of various talent, intention, and funding. These are risks you generally have to accept for something unusual, but you shouldn't have to accept these risks for your bread-and-butter widgets like buttons and dropdowns.
If you're embarking on a project that benefits from using pre-built widgets like this, the framework I'd recommend is Flet. My experience with it has been overwhelmingly positive, and I've entirely switched away from PyQt for any new projects. The one criticism I'd give is that it doesn't really support multi-window, but that's something I'd avoid for most projects because multi-window support can never really be cross-platform, since mobile platforms don't really support windows as such.
> https://github.com/kivy/kivy/issues/8557
This issue has been unresolved for half a year now.
web, mobile etc. react paid my rent but never again.
Hopefully, we can have that someday, without the likes of Electron or whatnot.
I would like to write a react app, with all its progress in UI/UX and thousands of libraries, package them into a Python app and distribute it as a desktop application.
Python dev considering Electron vs. Kivy for desktop app UI - https://news.ycombinator.com/item?id=39889274 - March 2024 (9 comments)
Python app development for beginners – Kivy mobile app tutorial - https://news.ycombinator.com/item?id=26935529 - April 2021 (9 comments)
Kivy: Cross-Platform Python Framework for UI Development - https://news.ycombinator.com/item?id=25484451 - Dec 2020 (55 comments)
An update on Python-for-android: v2019.06.06 released and future plans - https://news.ycombinator.com/item?id=20133966 - June 2019 (7 comments)
Kivy 1.10.0 released - https://news.ycombinator.com/item?id=14297890 - May 2017 (33 comments)
Python for Android - https://news.ycombinator.com/item?id=13964561 - March 2017 (61 comments)
Kivy: Develop multi-touch enabled Python apps - https://news.ycombinator.com/item?id=12127158 - July 2016 (45 comments)
Kivy 1.9.1 released - https://news.ycombinator.com/item?id=10827322 - Jan 2016 (22 comments)
Python on Android - https://news.ycombinator.com/item?id=9482618 - May 2015 (49 comments)
Kivy 1.9 – A framework for creating novel and performant user interfaces - https://news.ycombinator.com/item?id=9315404 - April 2015 (16 comments)
Kivy – Open-source Python library for rapid development of applications - https://news.ycombinator.com/item?id=8181306 - Aug 2014 (47 comments)
Python on Android? First impressions of Kivy - https://news.ycombinator.com/item?id=4677863 - Oct 2012 (10 comments)
Kivy - Open source cross-platform library for rapid development - https://news.ycombinator.com/item?id=4601016 - Oct 2012 (23 comments)
Kivy: python UI framework. GPU accelerated, multi-input (win,osx,lin,android) - https://news.ycombinator.com/item?id=2773488 - July 2011 (18 comments)
2) this is first time I’ve ever seen mobile included as part of “Cross-Platform”, that’s pretty awesome. We’re living in the future, friends! Tho it also makes me shudder at the thought of the phrase “QT app development”…
III) At this point, why not just use web? What is a “truly cross platform UI framework” other than HTML? I’m currently developing a site that uses TS in the frontend and Python in the back, and that seemed like a nice Unix-y division of labor. What am I missing?
Related
Komorebi: Tiling Window Management for Windows
The "komorebi" project is a tiling window manager for Windows, extending Microsoft's Desktop Window Manager. It offers CLI control, installation guides, configuration details, and a supportive community for contributions and discussions.
Open Sourcing Kinopio
The creator of Kinopio, a thinking canvas app, open sources the kinopio-client app on its 5th anniversary. Users can now run, modify, and enhance the lightweight app (~220kb) locally or on the kinopio-server. This move aims to foster community contributions despite potential risks.
Show HN: ViperIDE – An Innovative MicroPython IDE for Web and Mobile
ViperIDE is a modern MicroPython IDE for web and mobile platforms. It offers features like no installation required, cross-platform connectivity, file editor, package manager, terminal/REPL, and device support. Explore on ViperIDE's website or GitHub.
Writing GUI apps for Windows is painful
Samuel Tulach discusses challenges in writing Windows GUI apps in C++, emphasizing requirements like Windows support, styling, and efficiency. He evaluates various frameworks, recommending Dear ImGui for its simplicity and lightweight design.
Ttkbootstrap: Modern theme and widgets for Python tkinter
The "ttkbootstrap" project on GitHub enhances tkinter with modern flat style themes like Bootstrap. It offers various themes, widget styles, new widgets, and a Theme Creator for personalized themes. Find more on GitHub.