Cross platform GUI
Category
GUI
Python
Qt/Plasma/KDE
Sample on GH
PySide
Wiki
Tutorials
Examples
https://code.qt.io/cgit/pyside/pyside-setup.git/tree/examples
Support for android
Styles
PySide6 looks like Qt4
PySide2 looks like Qt5
tkinter
Part of Python's standard library
Not available for Android or iOS
Async support using GUIo
Not supported and tricky to setup working versions
No longer working for python3.8+ issue#5
Changes can be made from a different thread
No support for gestures, which are very useful on mobile
On TK issue tracker
TIP 570
As of [ 2021-03-24 Mér ] a draft
Multi-lang
WxWidgets
Javascript
NodeGUI
URL
Based on NodeJs+QT
Supports popular frameworks like
Angular
React
Svelte
Vue
Styling using CSS
On GH
On HN
Kotlin
Compose multiplatform
Test Compose-Multiplatform on devices
side_projectRun with
./gradlew desktop:run
Tested correctly on
x64 machine
android
PinePhone
Tested on
postmarketOS (on Pinephone)
Relevant issue
As of 0.5.0-build229 we support linux-arm64 in Compose builds.
Command
./gradlew desktop:run
Important dependencies
openjdk
Easy to get through repos
Requires
Needs glibc bindings
Error
> Task :desktop:run FAILED
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/user/.skiko/9bc0498710af97c980af19364b7b072a10ce805e6c4286abddd58ea9482ddb33/libskiko-linux-arm64.so: Error relocating /home/user/.skiko/9bc0498710af97c980af19364b7b072a10ce805e6c4286abddd58ea9482ddb33/libskiko-linux-arm64.so: __sprintf_chk: symbol not found
at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
at java.base/java.lang.Runtime.load0(Runtime.java:755)
at java.base/java.lang.System.load(System.java:1953)
at org.jetbrains.skiko.Library.loadLibraryOrCopy(Library.kt:20)
at org.jetbrains.skiko.Library.findAndLoad(Library.kt:108)
at org.jetbrains.skiko.Library.load(Library.kt:59)
at org.jetbrains.skia.impl.Library$Companion.staticLoad(Library.jvm.kt:12)
at androidx.compose.ui.ConfigureSwingGlobalsForCompose_desktopKt.configureSwingGlobalsForCompose(ConfigureSwingGlobalsForCompose.desktop.kt:49)
at androidx.compose.ui.ConfigureSwingGlobalsForCompose_desktopKt.configureSwingGlobalsForCompose$default(ConfigureSwingGlobalsForCompose.desktop.kt:38)
at androidx.compose.ui.window.Application_desktopKt.application(Application.desktop.kt:111)
at androidx.compose.ui.window.Application_desktopKt.application$default(Application.desktop.kt:105)
at MainKt.main(Main.kt:6)
at MainKt.main(Main.kt)