我有一個默認的設置面板顏色拾取: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