Python/Kivy:启动后初始化交换机(不运行on_active)

vaj7vani  于 2023-02-03  发布在  Python
关注(0)|答案(1)|浏览(89)

我遇到了Kivy小工具开关的问题,无法找到解决方案。互联网上的每个主题都涉及"使用 * 活动 * 属性",这对我来说是可以理解的。但我想根据程序中的当前环境设置/初始化启动活动值
在我的情况下:我有一个WiFi电源插头,可以已经运行。所以在这种情况下,当应用程序启动时,我希望开关与活动:正确。如果插头未激活,则开关应以激活开始:错误
通常,您可以从www.example.com执行以下操作:main.py with sth. like:

if (getWifiState) == "OFF":
    self.ids[widgetName].active = False
else:
    self.ids[widgetName].active = True

一般来说,这是可行的,并改变了状态。但这里的问题:只要您以这种方式更改开关值,它的行为就像您点击开关一样,因为默认值= 0更改为1→**on_active:函数()**将被调用。但我需要一个解决方案,允许我只改变开始值,而不运行on_active属性。

    • 可能的解决方案:**可能我必须将逻辑放入. kv文件中,以便在交换机初始化期间设置正确的启动参数。但是为什么?或者有其他方法可以这样做吗?

感谢你的帮助
尝试将逻辑放入. kv-File中的活动属性,但不起作用。

nhaq1z21

nhaq1z211#

我的解决方案:

import random
from kivy.app import App
from kivy.lang import Builder

kv = '''
BoxLayout:
    Switch:
        active: app.get_wifi_state()
        on_active: print(self.active)
'''

class Test(App):

    # method which return wifi status (replace implementation with your own)
    def get_wifi_state(self):
        return random.choice((True, False))

    def build(self):
        return Builder.load_string(kv)

Test().run()

相关问题