我正在将Kivy与GUI集成在一起,以用于Python(3.5)程序。我正在串联GridLayout
对象以在网格内部构建网格。这是我的代码的简化版本:
class SettingsPanel(GridLayout):
def __init__(self, *args):
GridLayout.__init__(self, cols=2);
self.add_widget(Label(text='SubSubFoo'))
self.add_widget(Label(text='SubSubFoo2'))
class Panel(GridLayout):
def __init__(self, *args):
GridLayout.__init__(self, cols=1);
self.add_widget(Label(text='SubFoo'))
self.my_second_layer_grid = SubSubGrid()
self.add_widget(self.my_second_layer_grid)
class GUI(App):
def build(self):
self.title = "My app"
layout = GridLayout(cols=2)
layout.add_widget(Label(text='Foo'))
self.my_panel = SubGrid()
layout.add_widget(self.my_panel)
return layout
if __name__ == '__main__':
GUI().run()
尽管我成功地处理了在这里称为SubGrid
的内容,但是当我在上一个插入SubSubGrid
的那一刻,却出现了与呼叫self.my_second_layer_grid = SubSubGrid()
相关的错误/ p>
...
BuilderException: Parser: File "C:\Users\me\AppData\Local\Continuum\anaconda3\envs\myenv\lib\site-packages\kivy\data\style.kv", line 871:
...
869: Label:
870: size_hint_y: None
>> 871: text: root.title
872: text_size: self.width - 32, None
873: height: max(50, self.texture_size[1] + 20)
...
AttributeError: 'SettingsPanel' object has no attribute 'title'
出什么问题了?
Kivy在解析Label
代码时是否遇到问题?如果是这样,为什么它没有得到我提供的text
字段?为什么第一个SubGrid
没问题?
编辑:
由于下面的注释,我意识到我的代码的简约版本不仅不正确,而且错过了问题的实际核心,即有关类的命名。在提供自己的答案之前,我正在更新问题。
答案 0 :(得分:0)
问题与串联无关,而与命名有关。
类SettingsPanel
已经是defined in Kivy,并且对其进行重新定义将其遮盖起来,从而对解析器造成各种问题也就不足为奇了。
我的解决方案是直接调用类SettingsSubPanel
。