Добавление виджета приводит к "AttributeError: объект" HomeScreen "не имеет атрибута _trigger_layout" "
Почему этот код генерирует следующую ошибку?
AttributeError: у объекта "HomeScreen" нет атрибута "_trigger_layout"
class HomeScreen(BoxLayout):
def __init__(self):
print "homescreen"
topbar = BoxLayout(spacing = -2, size = (64, 64), size_hint = (1, None))
back_button = Button(size = (32, 64), size_hint = (None, 1), text = '>', font_size = 15 + 0.015 * self.height, background_color = (0.239, 0.815, 0.552, 1))
home_button = Button(text = "HOME", font_size = 10 + 0.015 * self.width, background_color = (0.239, 0.815, 0.552, 1))
more_button = Button(size = (32, 64), size_hint = (None, 1), text = '...', font_size = 15 + 0.015 * self.height, background_color = (0.239, 0.815, 0.552, 1))
topbar.add_widget(back_button)
topbar.add_widget(home_button)
topbar.add_widget(more_button)
self.add_widget(topbar)
1 ответ
Решение
Потому что вы переписали метод init, который необходим. В приведенном ниже коде я также перезаписываю метод init, но я также вызываю метод init до того, как он был перезаписан.
class HomeScreen(BoxLayout):
def __init__(self, **kwargs):
super(HomeScreen, self).__init__(**kwargs)
...
from kivy.app import App
from kivy.uix.slider import Slider
from kivy.uix.treeview import TreeView, TreeViewNode
from kivy.uix.button import Button
from kivy.uix.slider import Slider
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
class HomeScreen(BoxLayout):
def __init__(self, **kwargs):
super(HomeScreen, self).__init__(**kwargs)
print("homescreen")
topbar = BoxLayout(spacing = 0, size = (64, 64), size_hint = (1, None))
back_button = Button(size = (32, 64), size_hint = (None, 1), text = '>', font_size = 15 + 0.015 * self.height, background_color = (0.239, 0.815, 0.552, 1))
home_button = Button(text = "HOME", font_size = 10 + 0.015 * self.width, background_color = (0.239, 0.815, 0.552, 1))
more_button = Button(size = (32, 64), size_hint = (None, 1), text = '...', font_size = 15 + 0.015 * self.height, background_color = (0.239, 0.815, 0.552, 1))
topbar.add_widget(back_button)
topbar.add_widget(home_button)
topbar.add_widget(more_button)
self.add_widget(topbar)
class TestApp(App):
def build(self):
return HomeScreen()
if __name__ == '__main__':
TestApp().run()