第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Kivy:自定義按鈕不隨 self.state 更改而更新

Kivy:自定義按鈕不隨 self.state 更改而更新

倚天杖 2023-09-26 16:26:53
我正在嘗試創(chuàng)建一個(gè) GUI,在查看了這里的各種帖子后,我仍然感到困惑。self.state我的問題是,當(dāng)我設(shè)置為不同的值時(shí),我為反映 GPIO 按鈕狀態(tài)而制作的自定義按鈕不會(huì)更新其外觀。我認(rèn)為這可能與對(duì)象構(gòu)造有關(guān),但我不知道如何修復(fù)它。main.pyimport kivykivy.require('1.11.1')from kivy.app import Appfrom kivy.uix.widget import Widgetfrom kivy.properties import NumericProperty, ObjectPropertyfrom kivy.uix.floatlayout import FloatLayoutfrom kivy.uix.button import Buttonfrom kivy.clock import Clockfrom kivy.core.window import Windowimport RPi.GPIO as GPIO# make app run in fullscreen modeWindow.fullscreen = 'auto'  # uses display's current resolution# Set up GPIOok_btn_pin = 4GPIO.setmode(GPIO.BCM)GPIO.setup(ok_btn_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)GPIO.add_event_detect(ok_btn_pin, GPIO.BOTH)    #detect if GPIO.RISING or GPIO.FALLING occurclass GPIOButton(Button):    btn_gpio_pin = NumericProperty(-1)    def __init__(self, **kwargs):        super(GPIOButton, self).__init__(**kwargs)        print("GPIOButton __init__ called")        print("btn_gpio_pin =", self.btn_gpio_pin)    def update(self, dt):        #print("GPIOButton update() called")        if GPIO.input(self.btn_gpio_pin) == GPIO.HIGH and GPIO.event_detected(self.btn_gpio_pin):            self.state = 'down'                        print("Pin", self.btn_gpio_pin, self.state)        elif GPIO.input(self.btn_gpio_pin) == GPIO.LOW and GPIO.event_detected(self.btn_gpio_pin):            self.state = 'normal'            print("Pin", self.btn_gpio_pin, self.state)class LeftSidebar(FloatLayout):    ok_btn = GPIOButton(btn_gpio_pin = ok_btn_pin)    def __init__(self, **kwargs):        super(LeftSidebar, self).__init__(**kwargs)        print("LeftSidebar __init__ called")    def update(self, dt):        #print("LeftSidebar update() called")        self.ok_btn.update(dt)
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

of被調(diào)用兩次__init__()。當(dāng)您的方法被調(diào)用并執(zhí)行時(shí)GPIOButton一次。這將創(chuàng)建通過規(guī)則出現(xiàn)在 GUI 中的。該方法在您的類中執(zhí)行時(shí)會(huì)再次調(diào)用。第二次調(diào)用創(chuàng)建的實(shí)例不會(huì)出現(xiàn)在 GUI 中,但它是該方法中引用的實(shí)例。build()self.root = LifterGUI()GPIOButtonkv__init__()ok_btn = GPIOButton(btn_gpio_pin = ok_btn_pin)LeftSidebarGPIOButtonupdate()


GPIOButton由于您已經(jīng)在 中設(shè)置了對(duì) 的引用kv,因此您可以修改該類LeftSidebar以使用該引用:


class LeftSidebar(FloatLayout):


    ok_btn_button = ObjectProperty(None)


    def __init__(self, **kwargs):

        super(LeftSidebar, self).__init__(**kwargs)

        print("LeftSidebar __init__ called")


    def update(self, dt):

        #print("LeftSidebar update() called")

        self.ok_btn_button.update(dt)

ok_btn_button在 your和kvtheok_btn_button中設(shè)置對(duì) 中內(nèi)置的 的LeftSidebar引用。這樣您就可以參考類中使用的按鈕。GPIOButtonkvself.ok_btn_buttonLeftSidebar


請(qǐng)注意,您的LifterGUI.


查看完整回答
反對(duì) 回復(fù) 2023-09-26
  • 1 回答
  • 0 關(guān)注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)