簡體   English   中英

Python/Kivy:啟動后初始化開關(不運行 on_active)

[英]Python/Kivy: initialize switch after startup (w/o running on_active)

我遇到了 Kivy 小部件Switch的問題,無法找到解決方案。 Inte.net 上的每個主題都涉及“使用活動屬性”,這對我來說是可以理解的。 但我想根據程序中的當前環境設置/初始化啟動活動值

就我而言:我有一個可以運行的 Wifi 電源插頭。 因此,在這種情況下,當應用程序啟動時,我希望切換為active: True 如果插頭被停用,開關應以active: False開頭

通常,您可以從 main.py 中使用某物執行此操作。 喜歡:

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

一般來說,這可以工作並更改 state。但這里的問題是:一旦您以這種方式更改開關值,它的行為就像您單擊開關一樣,因為默認值 = 0更改為 1on_active:函數()將被調用。 但我需要一個解決方案,它允許我在不運行 on_active 屬性的情況下更改起始值。

可能的解決方案:可能我必須將邏輯放入 my.kv 文件中,以便在交換機初始化期間設置正確的啟動參數。 但為什么? 或者還有另一種方法嗎?

感謝你的幫助

試圖將邏輯放入我的活動屬性 in.kv-File,但這沒有用。

我的解決方案:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM