gpt4 book ai didi

android - Kivy - 来自设置面板的 ColorPicker

转载 作者:太空狗 更新时间:2023-10-29 13:09:43 25 4
gpt4 key购买 nike

我有一个默认设置面板:

[
{ "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 运行应用程序,我会收到上述错误。有什么办法绕过这个吗?

最佳答案

不,是not Settings.register_type()'s fault , 也不 SettingItem的错,因为那只是一个 FloatLayout,这意味着这也会崩溃:

FloatLayout('blob')

它在 Python 3 上对我来说工作得很好。所以,如果它不在 FloatLayoutSettingItemSettings 中,我们将继续向上(或向下,基本上来自“基”类),然后在 SettingButtons 中。一个简单的打印会告诉你哪里出了问题:

print(kwargs)

Python 3 发生了变化(我找不到更改或 pep 的确切 url),它禁止您将关键字参数向下传递给 object 本身。

此代码一直有效,直到它达到您在 set_value() 中提到的预期错误:

def __init__(self, title, buttons, **kwargs):
print(kwargs)
self.register_event_type('on_release')
super(SettingItem, self).__init__(**kwargs)
for aButton in 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

关于android - Kivy - 来自设置面板的 ColorPicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com