簡體   English   中英

Kivy:如何在python中實例化動態類

[英]Kivy: how to instantiate a dynamic classes in python

我很難弄清楚如何實例化在我的python代碼上使用kv lang創建的動態類,請考慮以下代碼:

我的test.kv文件如下所示:

<MyPopup@Popup>:
    title:'hello'
    size_hint:(1, .6)
    GridLayout:
        id:root_grid
        cols:2
        padding:['8dp', '4dp','8dp','4dp']
        spacing:'8dp'
        Label:
            text:'some text here'
        Button:
            text:'Ok'
            on_press:do_something()
<MyGrid>:
    rows:1
    Button:
        text:'Show Popup'
        on_press:root.pop.show()

然后在我的test.py中:

from kivy.app               import App
from kivy.uix.gridlayout    import GridLayout
from kivy.uix.floatlayout   import FloatLayout
from kivy.uix.popup         import Popup
from kivy.factory           import Factory

class MyGrid(GridLayout):
    pop = Factory.MyPopup()
    pass

class Test(App):
    def build(self):
        return MyGrid()

if __name__=='__main__':
    Test().run()

我收到以下錯誤:引發FactoryException('未知類<%s>'%名稱)kivy.factory.FactoryException:未知類

有人可以解釋一下如何正確地做我,我想念什么? 如果您需要更多信息,請告訴我。 謝謝。

您對工廠的調用發生在加載kv文件之前,因此所需的類尚不存在。

除非出於某種原因需要類級別的屬性,否則請在MyGrid的__init__中設置self.pop。

您也可以只包含Python類聲明。 我通常更喜歡對我想與python進行交互的任何事情執行此操作,盡管意見不盡相同。

暫無
暫無

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

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