我很难弄清楚如何实例化我在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(&#39; Unkown class&lt;%s&gt;&#39;%name)kivy.factory.FactoryException:Unkown class
有人可以解释我如何正确地做到这一点,我错过了什么?如果您需要更多信息,请告诉我。感谢。
答案 0 :(得分:1)
您对工厂的调用是在加载kv文件之前进行的,因此您所需的类尚不存在。
除非有某些理由需要类级属性,否则请在MyGrid的__init__
中设置self.pop。
您也可以只包含一个Python类声明。我通常更愿意为我想要与python进行交互的任何事情做这件事,尽管意见各不相同。