[英]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 →更改為 1 → on_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.