plyer VS kivy

Compare plyer vs kivy and see what are their differences.

plyer

Plyer is a platform-independent Python wrapper for platform-dependent APIs (by kivy)

kivy

Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS (by kivy)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
plyer kivy
19 169
1,542 16,953
0.5% 0.7%
4.9 9.0
1 day ago 4 days ago
Python Python
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

plyer

Posts with mentions or reviews of plyer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-15.
  • notifications using plyer for python have inverted colors
    1 project | /r/programminghelp | 8 Dec 2023
    OP is referring to Plyer, a library by the Kivy team.
  • Compile iOS app on Mac after development on Windows
    3 projects | /r/kivy | 15 May 2023
    For platform specific functionality, there is plyer which provides some simple cross-platform functionality. See the platforms/ios directory for examples of using Apple APIs via pyobjus, you may need to do that sooner than you think...
  • Plyer Filechooser on Android?
    1 project | /r/kivy | 8 May 2023
    I don't develop for mobile platforms, so this is just a stab in the dark... There is a similar issue reported here: https://github.com/kivy/plyer/issues/512 which mentions some stuff about permissions, it may be worth looking into/double checking. It's also possible that some change in recent Android versions require a rewrite of the code, the mobile OS'es are moving rapidly..
  • Plyer + Kivy + Pushyy
    2 projects | /r/kivy | 19 Apr 2023
    [app] # (str) Title of your application title = АСОМС # (str) Package name package.name = myapp # (str) Package domain (needed for android/ios packaging) package.domain = ru.asoms # (str) Source code where the main.py live source.dir = . # (list) Source files to include (let empty to include all the files) source.include_exts = py,png,jpg,kv,atlas # (list) List of inclusions using pattern matching #source.include_patterns = assets/*,images/*.png # (list) Source files to exclude (let empty to not exclude anything) #source.exclude_exts = spec # (list) List of directory to exclude (let empty to not exclude anything) #source.exclude_dirs = tests, bin, venv # (list) List of exclusions using pattern matching # Do not prefix with './' #source.exclude_patterns = license,images/*/*.jpg # (str) Application versioning (method 1) version = 0.1 # (str) Application versioning (method 2) # version.regex = __version__ = ['"](.*)['"] # version.filename = %(source.dir)s/main.py # (list) Application requirements # comma separated e.g. requirements = sqlite3,kivy requirements = python3,kivy,kivymd,openssl,urllib3,requests,chardet,certifi,idna,git+https://github.com/kivy/plyer.git # (str) Custom source folders for requirements # Sets custom source for any requirements with recipes # requirements.source.kivy = ../../kivy #requirements.source.kivy = ./swagger_client # (str) Presplash of the application presplash.filename = presplash.png # (str) Icon of the application icon.filename = icon.png # (str) Supported orientation (one of landscape, sensorLandscape, portrait or all) orientation = portrait # (list) List of service to declare #services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY services = pythonnotificationhandler:python_notification_handler.py # # OSX Specific # # # author = © Copyright Info # change the major version of python used by the app osx.python_version = 3 # Kivy version to use osx.kivy_version = 1.9.1 # # Android specific # # (bool) Indicate if the application should be fullscreen or not fullscreen = 0 # (string) Presplash background color (for android toolchain) # Supported formats are: #RRGGBB #AARRGGBB or one of the following names: # red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray, # darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy, # olive, purple, silver, teal. android.presplash_color = FFFFFF # (string) Presplash animation using Lottie format. # see https://lottiefiles.com/ for examples and https://airbnb.design/lottie/ # for general documentation. # Lottie files can be created using various tools, like Adobe After Effect or Synfig. #android.presplash_lottie = "path/to/lottie/file.json" # (str) Adaptive icon of the application (used if Android API level is 26+ at runtime) #icon.adaptive_foreground.filename = %(source.dir)s/data/icon_fg.png #icon.adaptive_background.filename = %(source.dir)s/data/icon_bg.png # (list) Permissions android.permissions = INTERNET, ACCESS_NETWORK_STATE, READ_EXTERNAL_STORAGE, ACCESS_NOTIFICATIONS, ACCESS_NOTIFICATION_POLICY, POST_NOTIFICATIONS, QUERY_ALL_PACKAGES, FOREGROUND_SERVICE, FOREGROUND_SERVICE_IMMEDIATE, FOREGROUND_SERVICE_TYPE_LOCATION, GET_TASKS # (list) features (adds uses-feature -tags to manifest) #android.features = android.hardware.usb.host # (int) Target Android API, should be as high as possible. android.api = 33 # (int) Minimum API your APK / AAB will support. android.minapi = 21 # (int) Android SDK version to use #android.sdk = 32 # (str) Android NDK version to use #android.ndk = 23b # (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi. #android.ndk_api = 21 # (bool) Use --private data storage (True) or --dir public storagfe (False) #android.private_storage = True # (str) Android NDK directory (if empty, it will be automatically downloaded.) #android.ndk_path = # (str) Android SDK directory (if empty, it will be automatically downloaded.) #android.sdk_path = # (str) ANT directory (if empty, it will be automatically downloaded.) #android.ant_path = # (bool) If True, then skip trying to update the Android sdk # This can be useful to avoid excess Internet downloads or save time # when an update is due and you just want to test/build your package # android.skip_update = False # (bool) If True, then automatically accept SDK license # agreements. This is intended for automation only. If set to False, # the default, you will be shown the license when first running # buildozer. # android.accept_sdk_license = False # (str) Android entry point, default is ok for Kivy-based app #android.entrypoint = org.kivy.android.PythonActivity # (str) Full name including package path of the Java class that implements Android Activity # use that parameter together with android.entrypoint to set custom Java class instead of PythonActivity #android.activity_class_name = org.kivy.android.PythonActivity # (str) Extra xml to write directly inside the element of AndroidManifest.xml # use that parameter to provide a filename from where to load your custom XML code #android.extra_manifest_xml = ./src/android/extra_manifest.xml # (str) Extra xml to write directly inside the tag of AndroidManifest.xml # use that parameter to provide a filename from where to load your custom XML arguments: #android.extra_manifest_application_arguments = ./src/android/extra_manifest_application_arguments.xml # (str) Full name including package path of the Java class that implements Python Service # use that parameter to set custom Java class instead of PythonService #android.service_class_name = org.kivy.android.PythonService # (str) Android app theme, default is ok for Kivy-based app # android.apptheme = "@android:style/Theme.NoTitleBar" # (list) Pattern to whitelist for the whole project #android.whitelist = # (str) Path to a custom whitelist file #android.whitelist_src = # (str) Path to a custom blacklist file #android.blacklist_src = # (list) List of Java .jar files to add to the libs so that pyjnius can access # their classes. Don't add jars that you do not need, since extra jars can slow # down the build process. Allows wildcards matching, for example: # OUYA-ODK/libs/*.jar #android.add_jars = foo.jar,bar.jar,path/to/more/*.jar # (list) List of Java files to add to the android project (can be java or a # directory containing the files) #android.add_src = android.add_src = libs/ # (list) Android AAR archives to add #android.add_aars = # (list) Put these files or directories in the apk assets directory. # Either form may be used, and assets need not be in 'source.include_exts'. # 1) android.add_assets = source_asset_relative_path # 2) android.add_assets = source_asset_path:destination_asset_relative_path #android.add_assets = # (list) Gradle dependencies to add #android.gradle_dependencies = android.gradle_dependencies = com.google.firebase:firebase-messaging,com.google.firebase:firebase-analytics,com.google.code.gson:gson:2.8.6 # (bool) Enable AndroidX support. Enable when 'android.gradle_dependencies' # contains an 'androidx' package, or any package from Kotlin source. # android.enable_androidx requires android.api >= 28 #android.enable_androidx = False # (list) add java compile options # this can for example be necessary when importing certain java libraries using the 'android.gradle_dependencies' option # see https://developer.android.com/studio/write/java8-support for further information # android.add_compile_options = "sourceCompatibility = 1.8", "targetCompatibility = 1.8" # (list) Gradle repositories to add {can be necessary for some android.gradle_dependencies} # please enclose in double quotes # e.g. android.gradle_repositories = "maven { url 'https://kotlin.bintray.com/ktor' }" #android.add_gradle_repositories = # (list) packaging options to add # see https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html # can be necessary to solve conflicts in gradle_dependencies # please enclose in double quotes # e.g. android.add_packaging_options = "exclude 'META-INF/common.kotlin_module'", "exclude 'META-INF/*.kotlin_module'" #android.add_packaging_options = # (list) Java classes to add as activities to the manifest. #android.add_activities = com.example.ExampleActivity # (str) OUYA Console category. Should be one of GAME or APP # If you leave this blank, OUYA support will not be enabled #android.ouya.category = GAME # (str) Filename of OUYA Console icon. It must be a 732x412 png image. #android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png # (str) XML file to include as an intent filters in tag #android.manifest.intent_filters = # (str) launchMode to set for the main activity #android.manifest.launch_mode = standard # (list) Android additional libraries to copy into libs/armeabi #android.add_libs_armeabi = libs/android/*.so #android.add_libs_armeabi_v7a = libs/android-v7/*.so #android.add_libs_arm64_v8a = libs/android-v8/*.so #android.add_libs_x86 = libs/android-x86/*.so #android.add_libs_mips = libs/android-mips/*.so # (bool) Indicate whether the screen should stay on # Don't forget to add the WAKE_LOCK permission if you set this to True #android.wakelock = False # (list) Android application meta-data to set (key=value format) #android.meta_data = # (list) Android library project to add (will be added in the # project.properties automatically.) #android.library_references = # (list) Android shared libraries which will be added to AndroidManifest.xml using tag #android.uses_library = # (str) Android logcat filters to use #android.logcat_filters = *:S python:D # (bool) Android logcat only display log for activity's pid #android.logcat_pid_only = False # (str) Android additional adb arguments #android.adb_args = -H host.docker.internal # (bool) Copy library instead of making a libpymodules.so #android.copy_libs = 1 # (list) The Android archs to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64 # In past, was `android.arch` as we weren't supporting builds for multiple archs at the same time. android.archs = arm64-v8a, armeabi-v7a # (int) overrides automatic versionCode computation (used in build.gradle) # this is not the same as app version and should only be edited if you know what you're doing # android.numeric_version = 1 # (bool) enables Android auto backup feature (Android API >=23) android.allow_backup = True # (str) XML file for custom backup rules (see official auto backup documentation) # android.backup_rules = # (str) If you need to insert variables into your AndroidManifest.xml file, # you can do so with the manifestPlaceholders property. # This property takes a map of key-value pairs. (via a string) # Usage example : android.manifest_placeholders = [myCustomUrl:\"org.kivy.customurl\"] # android.manifest_placeholders = [:] # (bool) disables the compilation of py to pyc/pyo files when packaging # android.no-compile-pyo = True # (str) The format used to package the app for release mode (aab or apk or aar). # android.release_artifact = aab # (str) The format used to package the app for debug mode (apk or aar). # android.debug_artifact = apk # # Python for android (p4a) specific # # (str) python-for-android URL to use for checkout #p4a.url = # (str) python-for-android fork to use in case if p4a.url is not specified, defaults to upstream (kivy) #p4a.fork = kivy # (str) python-for-android branch to use, defaults to master p4a.branch = develop # (str) python-for-android specific commit to use, defaults to HEAD, must be within p4a.branch #p4a.commit = HEAD # (str) python-for-android git clone directory (if empty, it will be automatically cloned from github) #p4a.source_dir = p4a.source_dir = /mnt/c/Users/rEHui/Desktop/wsl/python-for-android1 # (str) The directory in which python-for-android should look for your own build recipes (if any) #p4a.local_recipes = # (str) Filename to the hook for p4a #p4a.hook = # (str) Bootstrap to use for android builds # p4a.bootstrap = sdl2 # (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask) #p4a.port = # Control passing the --use-setup-py vs --ignore-setup-py to p4a # "in the future" --use-setup-py is going to be the default behaviour in p4a, right now it is not # Setting this to false will pass --ignore-setup-py, true will pass --use-setup-py # NOTE: this is general setuptools integration, having pyproject.toml is enough, no need to generate # setup.py if you're using Poetry, but you need to add "toml" to source.include_exts. #p4a.setup_py = false # (str) extra command line arguments to pass when invoking pythonforandroid.toolchain #p4a.extra_args = # # iOS specific # # (str) Path to a custom kivy-ios folder #ios.kivy_ios_dir = ../kivy-ios # Alternately, specify the URL and branch of a git checkout: ios.kivy_ios_url = https://github.com/kivy/kivy-ios ios.kivy_ios_branch = master # Another platform dependency: ios-deploy # Uncomment to use a custom checkout #ios.ios_deploy_dir = ../ios_deploy # Or specify URL and branch ios.ios_deploy_url = https://github.com/phonegap/ios-deploy ios.ios_deploy_branch = 1.10.0 # (bool) Whether or not to sign the code ios.codesign.allowed = false # (str) Name of the certificate to use for signing the debug version # Get a list of available identities: buildozer ios list_identities #ios.codesign.debug = "iPhone Developer: ()" # (str) The development team to use for signing the debug version #ios.codesign.development_team.debug = # (str) Name of the certificate to use for signing the release version #ios.codesign.release = %(ios.codesign.debug)s # (str) The development team to use for signing the release version #ios.codesign.development_team.release = # (str) URL pointing to .ipa file to be installed # This option should be defined along with `display_image_url` and `full_size_image_url` options. #ios.manifest.app_url = # (str) URL pointing to an icon (57x57px) to be displayed during download # This option should be defined along with `app_url` and `full_size_image_url` options. #ios.manifest.display_image_url = # (str) URL pointing to a large icon (512x512px) to be used by iTunes # This option should be defined along with `app_url` and `display_image_url` options. #ios.manifest.full_size_image_url = [buildozer] # (int) Log level (0 = error only, 1 = info, 2 = debug (with command output)) log_level = 2 # (int) Display warning if buildozer is run as root (0 = False, 1 = True) warn_on_root = 1 # (str) Path to build artifact storage, absolute or relative to spec file # build_dir = ./.buildozer # (str) Path to build output (i.e. .apk, .aab, .ipa) storage # bin_dir = ./bin # ----------------------------------------------------------------------------- # List as sections # # You can define all the "list" as [section:key]. # Each line will be considered as a option to the list. # Let's take [app] / source.exclude_patterns. # Instead of doing: # #[app] #source.exclude_patterns = license,data/audio/*.wav,data/images/original/* # # This can be translated into: # #[app:source.exclude_patterns] #license #data/audio/*.wav #data/images/original/* # # ----------------------------------------------------------------------------- # Profiles # # You can extend section / key with a profile # For example, you want to deploy a demo version of your application without # HD content. You could first change the title to add "(demo)" in the name # and extend the excluded directories to remove the HD content. # #[app@demo] #title = My Application (demo) # #[app:source.exclude_patterns@demo] #images/hd/* # # Then, invoke the command line with the "demo" profile: # #buildozer --profile demo android debug
  • plyer.notification.notify(toast = False), can anyone help me make this line work please?
    2 projects | /r/kivy | 9 Apr 2023
    Notification.notify crashes android app · Issue #296 · kivy/plyer (github.com) I tried what is given here, but it doesn't work either, please help me, I have been stuck on it for a week. The app works if toast = True, but the second I press the button where toast is false, it crashes
  • How do I read Android settings from Kivy?
    1 project | /r/kivy | 3 Feb 2023
  • Can I create a running app with Kivy
    1 project | /r/kivy | 9 Jan 2023
    I mean all you 'need' is access to your phones sensors and or GPS data. So yes its possible. Have a look at https://github.com/kivy/plyer maybe it helps you get started.
  • adding user credentials to keystore
    1 project | /r/kivy | 5 Jan 2023
    I'm not aware of any examples for this, you'll have to do the detective work to figure out how it's done with Android APIs and then implement it with pyjnius.. Good places to look for example code using Android APIs are plyer/plaforms/android directory and the various repositories of Android-for-Python but obviously they don't use the keystore itself..
  • Almost done testing/dev phase, assist with few "optional" features
    2 projects | /r/kivy | 4 Dec 2022
    I have used Plyer for a native filechooser, but had a problem on MacOS, if the filter was set it would cause the app the crash. It looks like this issue has been solved! https://github.com/kivy/plyer/issues/524
  • display files on Android
    1 project | /r/kivy | 23 Sep 2022

kivy

Posts with mentions or reviews of kivy. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-28.
  • How to Develop a User Data Storage Registration Form Using Python.
    3 projects | dev.to | 28 Mar 2024
    We will create this complete Python registration form using Kivy. We get started by installing Kivy, a powerful Python framework for building interactive applications.
  • Ask HN: Can I create a mobile and Web App using Python/Python Framework?
    5 projects | news.ycombinator.com | 13 Feb 2024
    For reference, YouTube runs on Python[1,2,3]:

    > 1. Python and Django: YouTube’s backend is predominantly written in Python, offering a balance of performance and readability.

    > 2. Google Cloud Platform...

    > 3. Java and C++: YouTube also utilizes Java and C++ for specific backend services, as they provide better performance for certain tasks.

    ---

    A long time ago, I looked into these Python frameworks:

    - http://www.web2py.com/

    - https://kivy.org/

    [1]: https://blogopost.com/youtube-tech-stack/#backend

    [2]: https://medium.com/@shanthanaroja99/technology-stack-behind-...

    [3]: https://youtu.be/G-lGCC4KKok

  • Modifying GUI elements from a background thread
    2 projects | /r/kivy | 7 Dec 2023
    I have a multi-threaded app using Kivy for the GUI and sometimes need to update the GUI from a background thread. This app is a few years old and I recently updated to Kivy 2.2 and am now getting an exception with the message "Cannot create graphics instruction outside the main Kivy thread" -- which is related to this change in Kivy 2.1: https://github.com/kivy/kivy/pull/7270
  • Python GUI libraries? <3
    1 project | /r/learnpython | 6 Dec 2023
    I suggest you use kivy which is suitable for the desktop but also has the advantage of being one of few options for creating Python based native(ish) mobile apps (for IoS and Android app stores).
  • Ask HN: Best framework to build a GUI app in Python for windows and macOS?
    1 project | news.ycombinator.com | 22 Nov 2023
    I think the best one right now for python is "beeware": https://beeware.org/

    You also have Kivy which is prety good: https://kivy.org/

  • Ask HN: Current best GUI and render window stack?
    1 project | news.ycombinator.com | 29 Aug 2023
  • Python GUIs
    14 projects | news.ycombinator.com | 14 Jun 2023
    Anyone has some experience with Kivy [1]? It seems that it checks off some of my requirements, like cross-platform, supporting touch interfaces, ease of development, allows complex/fancy UIs as well, etc.

    [1] https://kivy.org/

  • Mobile testing visualiser
    1 project | /r/kivy | 8 Jun 2023
    There are hot reload tools like kivy.tools.kviewer and KivyMD HotReload and I think others... but maybe they used something else, hard to tell
  • Ask HN: Who wants to be hired? (June 2023)
    21 projects | news.ycombinator.com | 1 Jun 2023
    Notable Projects: Kivy ( https://kivy.org/ )

    My name is Mathieu Virbel, and I am a consultant on system and software architecture with over 12 years of experience as a freelance and 20 years in the field. I have a passion for creating innovative and user-friendly applications. I specialize in using the open-source Kivy framework to develop desktop and mobile applications, but I am also skilled in other technologies and frameworks.

  • Ask HN: Freelancer? Seeking freelancer? (June 2023)
    6 projects | news.ycombinator.com | 1 Jun 2023
    SEEKING WORK | France (UTC-1) | Remote | Full stack developer

    My name is Mathieu Virbel, and I am a consultant on system and software architecture with over 12 years of experience as a freelance and 20 years in the field. I have a passion for creating innovative and user-friendly applications. I specialize in using the open-source Kivy framework to develop desktop and mobile applications, but I am also skilled in other technologies and frameworks.

    I worked on a variety of subjects, from Interactives and mobile application for Museum and Public Institutions, Embedded system in security company, telecommunication, and Startups environments from scratch. Recently playing with Python, Golang, VueJS 3/Typescript, InfluxDB, Docker Swarm, as well as writing specifications and reviewing code of others contractors.

    Technologies: Python (django, flask, tensorflow, Kivy, …), Golang, TypeScript, VueJS, Quasar, Docker, Docker Swarm, Terraform, Ansible, MongoDB, InfluxDB, MariaDB, SQLite, Kafka, Prometheus/Graphana

    Résumé/CV: https://meltingrocks.com/cv

    LinkedIn: https://www.linkedin.com/in/mathieuvirbel/

    Website: https://meltingrocks.com

    Email: [email protected]

    Notable Projects: Kivy ( https://kivy.org/ )

What are some alternatives?

When comparing plyer and kivy you can also consider the following projects:

PyJNIus - Access Java classes from Python

PySimpleGUI - Python GUIs for Humans! PySimpleGUI is the top-rated Python application development environment. Launched in 2018 and actively developed, maintained, and supported in 2024. Transforms tkinter, Qt, WxPython, and Remi into a simple, intuitive, and fun experience for both hobbyists and expert users.

KivyMD - KivyMD is a collection of Material Design compliant widgets for use with Kivy, a framework for cross-platform, touch-enabled graphical applications. https://youtube.com/c/KivyMD https://twitter.com/KivyMD https://habr.com/ru/users/kivymd https://stackoverflow.com/tags/kivymd

wxPython

zbarcam - Real time Barcode and QR Code scanner

pyobjus - Access Objective-C classes from Python

flet - Flet enables developers to easily build realtime web, mobile and desktop apps in Python. No frontend experience required.

kivy-ios - Toolchain for compiling Python / Kivy / other libraries for iOS

PySide - ATTENTION: This project is deprecated, please refer to PySide2

Android-Notification-in-Python - A comprehensive guide into creating notification on android using python

DearPyGui - Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies