[英]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.