У меня есть BoxLayout, определенный в файле kivy, и я пытаюсь добавить метку к этому BoxLayout из файла python. Ниже приведены мои сценарии python и kivy. Когда я пытаюсь запустить программу, как есть, это не удается, и я получаю сообщение об ошибке:Как добавить дополнительный виджет из файла python в супер-виджет, определенный в файле kivy?
«properties.pyx», строка 654, в kivy.properties.ObservableDict .__ getattr__ (kivy \ properties.c: 9590) KeyError: 'коробка'
Как я могу добавить метку (определенный в dummy.py) к BoxLayout (определенный в dummy.kv) от dummy.py?
dummy.py показано ниже:
from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.lang import Builder
Builder.load_file('dummy.kv')
class test(BoxLayout):
box = ObjectProperty()
def __init__(self):
label = Label(text='Hello')
self.ids.box.add_widget(label)
class Test(App):
def build(self):
return test()
if __name__ == '__main__':
Test().run()
dummy.kv показано ниже:
#:kivy 1.8
<test>:
box: box
BoxLayout:
orientation: 'vertical'
id: box
Спасибо. Я добавил оператор импорта «из kivy.lang import Builder» и «Builder.load_file (« dummy.kv »)», как это видно в отредактированном блоке кода выше. Тем не менее, я все еще получаю ту же ошибку. Пожалуйста, порекомендуйте. – phazon
Является ли отступ в вашем вставленном коде тем же самым, что и отступ в реальном файле? – inclement
К сожалению. Теперь это. Я только что отступил строку, содержащую «box: box» в файле kivy, чтобы исправить ее. Теперь он имеет точно такой же отпечаток, как и мой фактический код. – phazon