我有一个默认的设置面板颜色拾取:Kivy - 从设置面板
[
{ "type": "title",
"title": "Test application" },
{"type": "buttons",
"title": "Title here",
"desc": "desc here",
"section": "some section",
"key": "configchangebuttons",
"buttons":[
{"title":"Add","id":"button_add"},
{"title":"Del","id":"button_delete"},
{"title":"Rename","id":"button_rename"}
]},
{ "type": "numeric",
"title": "My second key",
"desc": "Description of my second key",
"section": "section1",
"key": "key2" }
]
我阅读文档,但我真的不明白的方式有真正为了添加一个动作按钮,面板推出颜色选择器并将结果保存到ini文件中。
我想报名参加的设置面板中一个新的对象(按钮),但它不是真正的工作了那么好。
我所瞄准的就是怎样得到RGB代码的用户选择,并保存在从那里我会读它,并用它在标签上的ini文件的颜色。
这是按钮我尝试添加
class SettingButtons(SettingItem):
def __init__(self, **kwargs):
self.register_event_type('on_release')
super(SettingItem, self).__init__(**kwargs)
for aButton in kwargs["buttons"]:
oButton=Button(text=aButton['title'], font_size= '15sp')
oButton.ID=aButton['id']
self.add_widget(oButton)
oButton.bind (on_release=self.On_ButtonPressed)
def set_value(self, section, key, value):
# set_value normally reads the configparser values and runs on an error
# to do nothing here
return
def On_ButtonPressed(self,instance):
self.panel.settings.dispatch('on_config_change',self.panel.config, self.section, self.key, instance.ID)
而且我在这里注册实例:
def build_settings(self, settings):
settings.register_type('buttons', SettingButtons)
with open("settings.json", "r") as settings_json:
settings.add_json_panel('B4A settings', self.config, data=settings_json.read())
但是,当我启动应用程序,我得到:
TypeError: object.__init__() takes no parameters
我知道这来自build_settings的register_type部分
编辑
经过多一点调查,似乎这种方法的工作原理和按钮都显示在设置面板上,但只有当APK是从手机构建和运行。如果我从我的linux运行应用程序,我得到上述错误。任何方式绕过这个?
我明白了,所以代码在我的android上工作,因为它的构建方式是Python 2.7,即使我使用python 3编写它。是否有任何绕过? – Nick
@Nick Yeah,同时编写Python 2和3兼容代码,或者如果您使用py3编写py3代码。 – KeyWeeUsr
好吧,我做目标蟒3,但它似乎buildozer /蟒蛇为Android打包为Python 2由于某种原因 – Nick