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

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

如何將一個(gè)變量從一個(gè)類(lèi)傳遞到另一個(gè)類(lèi)?

如何將一個(gè)變量從一個(gè)類(lèi)傳遞到另一個(gè)類(lèi)?

狐的傳說(shuō) 2023-03-01 16:19:22
我正在使用 Kivy 和 Kivymd。class Admin我在和之間傳遞變量時(shí)遇到問(wèn)題class EditArticle。我需要my_string從 Admin 傳遞到 EditArticle。我正在嘗試這樣做,但得到一個(gè)空字符串。所以,在class Admin我有my_string. 然后,在edit_article我class Admin為my_string. 然后我試圖edit以 class EditArticle. 但它一直是空的。我真的想不通。如果您運(yùn)行我的代碼,您將點(diǎn)擊頂部菜單admin。然后點(diǎn)擊任何mdchip。然后單擊對(duì)話(huà)窗口中的 etit 按鈕。然后點(diǎn)擊按鈕獲取my_string(但它總是空的)。這是我的 App.py我的應(yīng)用程序.kv <WindowManager>    Container:        id: scr_1        name: 'container'    Detail:        id: scr_2        name: 'detail'    Admin:        id: scr_3        name: 'admin'    EditArticle:        id: scr_4        name: 'edit-article'        var: scr_3.my_string # <---------    ResultSearch:        id: scr_5        name: 'result-search'    UserSettings:        id: scr_6        name: 'settings'<Admin>:    BoxLayout:        id: boxlayout_1        orientation: 'vertical'        MDToolbar:            pos_hint: {'top': 1}            title: 'Admin Blog'            left_action_items: [["arrow-left", lambda x: app.callback()]]        ScrollView:            MDStackLayout:                adaptive_height: True                padding: 10                spacing: dp(5)                id: box<EditArticle>    MDToolbar:        title: 'Admin Blog'    MDLabel:        text: str(root.var)    MDRaisedButton:        text: 'click me to see a variable in console'        pos_hint: {'center_x': .5, 'center_y': .5}        on_release: root.edit(root)<MyToolbar@CustomToolbar>:    size_hint_y: None    height: self.theme_cls.standard_increment    padding: "25dp"    spacing: "12dp"    MDLabel:        id: label        text: 'Blog'        font_style: 'H6'        theme_text_color: "Custom"        text_color: 1,1,1,1    Widget:    MDIconButton:        id: button_2        icon: "dots-vertical"        pos_hint: {"center_y": .5}        theme_text_color: "Custom"        text_color: 1,1,1,1        on_release: root.menu.open()<Container>
查看完整描述

3 回答

?
溫溫醬

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

根本原因:

在您的應(yīng)用程序中,有兩個(gè)class Admin實(shí)例化的實(shí)例。


WindowManager()當(dāng)您在方法中實(shí)例化根時(shí),第一個(gè)實(shí)例在 kv 文件中實(shí)例化build。


片段:

<WindowManager>:

    ...


    Admin:

        id: scr_3

        name: 'admin'

    ...

第二個(gè)實(shí)例在class BlogChip.


片段:

class BlogChip(MDChip):

    get_admin = Admin()

    ...

類(lèi)屬性my_string在 的第二個(gè)實(shí)例中更新class Admin。但是屏幕正在引用由根實(shí)例化的實(shí)例。因此,應(yīng)用程序顯示空字符串。


解決方案:

該解決方案需要更改 kv 和 python 文件。


kv文件:

替換 callback: root.get_admin.get_article 為 callback: app.root.ids.scr_3.get_article


片段:

<BlogChip>

    label: root.title

    icon: ''

    callback: app.root.ids.scr_3.get_article

蟒蛇文件:

刪除get_admin = Admin()在class BlogChip(MDChip):

片段:

class BlogChip(MDChip):

    id = NumericProperty()

    title = StringProperty()

    body = StringProperty()

在方法中,edit()初始化類(lèi)屬性,var

片段:

class EditArticle(Screen):

    var = StringProperty()


    def edit(self, instance):

        # Each screen has by default a property manager that 

        # gives you the instance of the ScreenManager used.

        self.var = self.manager.ids.scr_3.my_string

        print(self.var, ' << it is going to be <my_string> from Admin')

輸出:

http://img1.sycdn.imooc.com//63ff0acd00012ab113660767.jpg

查看完整回答
反對(duì) 回復(fù) 2023-03-01
?
隔江千里

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

我真的不明白你在你的代碼中做了什么?

你為什么不直接看看Admin.my_string你的內(nèi)部EditArticle class?

如果這不起作用,您是否嘗試getter為您的my_string屬性創(chuàng)建一個(gè)?
抱歉,我不知道它是如何StringProperty工作的……但是你不能在 中做類(lèi)似下面的事情嗎Agent class

def get_my_string(): 
   return my_string.value()

然后你就打電話(huà)Agent.get_my_string()給你的EditArticle班級(jí)。


查看完整回答
反對(duì) 回復(fù) 2023-03-01
?
茅侃侃

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

這是我的問(wèn)題的解決方案。我必須添加EditArticle.my_string = self.my_string這樣class Admin的內(nèi)容:


def edit_article(self, instance):

    EditArticle.my_string = self.my_string

    App.get_running_app().window_manager.current = 'edit-article'

    self.dialog_get_article.dismiss()

在此之后我可以得到它c(diǎn)lass EditArticle()


查看完整回答
反對(duì) 回復(fù) 2023-03-01
  • 3 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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