Kivy 和 android 共享首选项

2024-04-13

我正在寻找一种从 Kivy 框架在 Android 设备上持久存储设置的方法。

我发现 Kivy 文档总体信息丰富,但在这个特定领域含糊不清。它提到了三种方法(抱歉,没有足够的声誉来提供可点击的链接、相对路径kivy.org假如,如果有人可以修复这些链接,我会很高兴


Kivy.Config用于存储与App类实例化相关的设置。 在导入任何其他 kivy 模块之前,它通常放置在 Python 脚本的最顶部。 此方法不是特定于平台的,但配置文件的默认路径会根据平台而变化。

from kivy.config import Config
desktop=Config.getint('kivy', 'desktop')
if desktop == 1:
    print "This app is being run on a desktop."

DictStore 是一个将字典存储到磁盘的存储类。 filename 参数指定存储字典的文件的名称。 当调用 get 函数时,会返回一个 Python 字典。

from kivy.app import App
from kivy.uix.button import Button
from kivy.storage.dictstore import DictStore

class TestApp(App):
    def build(self):
        try:
            store = DictStore(filename="MY_SETTINGS")
            dictionary = store.get("my_important_variable")
            print "\t\t\t KIVY 2: DictStore Succeeded",
        except KeyError as err:
            dictionary = {'name': 'None'}
            print ("KIVY, 2, error: {}".format(repr(err)))

        self.text = str(dictionary)
        btn1 = Button(text=self.text)
        btn1.bind(on_press=self.callback) #
        return btn1

    def callback(self, instance):
        print('The button <%s> is being pressed, SAVING...' % instance.text)
        try:
            store = DictStore(filename="MY_SETTINGS")
            store.put("my_important_variable", name="John")
        except Exception as err:
            print ("KIVY, 5, error: {}".format(repr(err)))



if __name__ == '__main__':
    TestApp().run()

我将在下面提供用于访问共享首选项的代码。 如果您有兴趣了解更多信息,请阅读http://developer.android.com/guide/topics/data/data-storage.html http://developer.android.com/guide/topics/data/data-storage.html and https://kivy.org/planet/2015/04/python-on%C2%A0android/ https://kivy.org/planet/2015/04/python-on%C2%A0android/

from kivy.app import App
from kivy.uix.button import Button

import jnius

class TestApp(App):
    def build(self):
        try:
            PythonActivity = jnius.autoclass('org.renpy.android.PythonActivity')
            activity = PythonActivity.mActivity
            cntxt = activity.getApplicationContext()
            prefs = cntxt.getSharedPreferences("MY_PREFS", cntxt.MODE_PRIVATE )
            print "KIVY ACQUIRED SHARED PREFS"
            myVar = prefs.getString("my_important_variable", "Default String")
            print "\tKIVY 3: Retrieved SharedPref"
        except jnius.jnius.JavaException as err:
            myVar="Error Loading Prefs."
            print ("KIVY, 3, error: {}".format(repr(err)))

        self.text = myVar
        btn1 = Button(text=self.text)
        btn1.bind(on_press=self.callback) #
        return btn1

    def callback(self, instance):
        print('The button <%s> is being pressed, SAVING...' % instance.text)
        try:
            PythonActivity = jnius.autoclass('org.renpy.android.PythonActivity')
            activity = PythonActivity.mActivity
            cntxt = activity.getApplicationContext()
            prefs = cntxt.getSharedPreferences("MY_PREFS", cntxt.MODE_PRIVATE)
            editor = prefs.edit()
            editor.putString("my_important_variable", "This is important!")
            editor.commit()
            print "\tKIVY: Added string <This is important!> to shared prefs."
        except Exception as err:
            print ("\tKIVY, 6, error: {}".format(repr(err)))

if __name__ == '__main__':
    TestApp().run()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kivy 和 android 共享首选项 的相关文章

随机推荐

  • 有没有办法检测外部 javascript 文件是否已完全加载?

    我有一个使用的网络表单验证码过滤掉机器人 该表格有一个
  • 无法在单元测试中模拟 HttpClient PostAsync()

    我正在使用 xUnit 和 Moq 编写测试用例 我试图模拟 HttpClient 的 PostAsync 但出现错误 下面是用于模拟的代码 public TestADLS Operations var mockClient new Moc
  • 在weblogic上升级jax-rs共享库

    通常weblogic 12c不支持jax rs 2 0 但是通过weblogic本身附带的jax rs共享库的帮助 可以将jax rs版本从1 1升级到2 0 问题是库实现是 jersey 2 5 它不能满足我的需求 我在 weblogic
  • 如何使用Apple的handleQuit方法?

    我制作了一个将数据保存到 data 文件的 java 应用程序 我有一个窗口监听器 它监听应用程序关闭 以便触发代码将数据保存到文件中 当按下我的专用退出按钮或按下窗口上的红色 X 时 一切都很好 然而 当用户选择命令 q 路线时 事情就会
  • 为 python GUI 应用程序授予 root 权限以在 ubuntu 中运行命令

    现在 我有一个 python GUI 应用程序 需要使用 sudo 权限运行命令 如下所示 import commands iStat askpassPath commands getstatusoutput which ssh askpa
  • 处理滚动条和 jquery .width() 方法

    jQuery 的 width 方法似乎没有考虑滚动条 这对我来说是有问题的 因为我想将一些子项的宽度设置为等于其父项的宽度 我使用类似于以下的 jQuery contentDiv width containerDiv width 在这个例子
  • 只是想从 Java Applet 将数据写入串行端口?

    几天来我一直在抓狂地想弄清楚为什么这似乎永远不起作用 首先 这是我的配置 Windows 7 x64JDK 7 x86JRE 7 x86火狐 x86由 Thin 提供服务的 Rails 3Java 设置使得 下一代插件 不处于活动状态 但它
  • Play 2.3.x 可以在没有 Activator(并且使用 maven)的情况下使用吗?

    我这里有两个相关的问题 在 Play 2 2 x 中 发行版捆绑为 zip 文件 可通过 Maven 存储库下载http downloads typesafe com play 2 2 x play 2 2 x zip http downl
  • 未找到 void com.unity3d.player.UnityPlayer.nativeRestartActivityIndi​​cator() 的实现

    我是 Unity 新手 我正在尝试将 Unity 游戏 它有 ARcore 集成到本机 Android 应用程序中 我可以在新的 HelloWorld 应用程序中启动 unity 但无法在我的真实应用程序 具有其他模块 中启动 注意 当我从
  • 使用 Sinon 测试 D3 中的鼠标悬停事件

    我在试图通过测试时遇到了麻烦 我希望能够使用间谍来检查鼠标悬停事件是否被正确调用 目前 我收到以下错误 错误 预计已被调用至少一次但从未被调用 我的部分困惑与 d3 和 jQuery 选择器之间的差异有关 我非常乐意使用后者 但我不确定如何
  • 正则表达式限制字符串大小

    如何限制此正则表达式的字符串大小 a z a z0 9 a z0 9 我只需要添加量词 3 16 撒上一些积极的前瞻 http www regular expressions info lookaround html通过添加来测试字符串的总
  • 令人困惑的苹果应用内购买产品

    我正在创建一个笔记应用程序 例如 iPad 版 Evernote 我决定提供一些应用内购买计划有两个原因 解锁应用程序中的更多功能 应在指定时间段后自动更新 现在我很困惑为此选择哪种类型的应用内购买 我对感兴趣自动续订订阅 访问指南后her
  • SqlCommand.Cancel() 会导致性能提升吗?

    我已经看到它出现在代码中的多个位置 从来没有解释 只是在其上方有一个神秘的注释 包含声明和执行以了解上下文 这只是运行 SqlCommand 的标准过程 SqlCommand cmd new SqlCommand cmd ExecuteRe
  • Swift where 条件检查属性是否已实现

    我刚刚找到了另一种在 Swift 中充分利用协议和协议扩展的方法 即扩展可选协议来添加函数 以便我可以提供默认值 我在这里写了一篇关于此的博客文章 https janthielemann de random stuff providing
  • 获取 DbContext 中当前登录的用户

    出于审计目的 我尝试在 DbContext 中获取当前登录的用户 不过我对此有一些问题 需要考虑以下几点 在 Blazor Server 中我们必须使用 AddDbContextFactory IHttpContextAccessor 在部
  • 如何使用 PHP 从文档中获取数字签名

    我对数字签名这个东西很陌生 我想做的是检查文档是否经过数字签名 如果已签名 则验证签名 我已经搜索了很多 我发现了一些有关验证签名 使用 openssl 的有用主题 但我找不到有关以下内容的任何内容 文档是否已签名 我还在stackover
  • 可以或应该同时运行的 Promise 数量是否有限制?

    令人惊讶的是 谷歌无法返回这个问题的结果 我想知道在排队并等待下一个完成之前可以或应该并行运行多少个承诺 我想这可能取决于用户的互联网 但我认为值得一问 如果它基于用户的 ISP 连接类型 是否有办法在启动队列之前测试发送的理想承诺数量 另
  • 增量数据库字段

    假设我在网站上有一篇文章 我想跟踪该文章的浏览量 在 Articles 表中 有 PK ID int Name nvarchar 50 和 ViewCount int 每次查看页面时 我都会增加 ViewCount 字段 我担心更新字段时发
  • 以编程方式获取 TFS 责任(注释)数据

    我正在尝试为 Team Foundation Server 2010 实现一个插件 该插件将创建有关团队项目中的用户的报告 从概念上讲 为了正确实现此插件 我需要访问与在 Visual Studio 中使用 注释 功能时获得的相同数据 我需
  • Kivy 和 android 共享首选项

    我正在寻找一种从 Kivy 框架在 Android 设备上持久存储设置的方法 我发现 Kivy 文档总体信息丰富 但在这个特定领域含糊不清 它提到了三种方法 抱歉 没有足够的声誉来提供可点击的链接 相对路径kivy org假如 如果有人可以