2017-10-07 96 views
0

为什么此代码会生成以下错误?将小部件结果添加到“AttributeError:'HomeScreen'对象没有属性'_trigger_layout'”

AttributeError: 'HomeScreen' object has no attribute '_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) 

回答

0

因为已覆盖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() 

enter image description here

+0

现在我的按钮是不可见的,我一个空白屏幕,你知道如何解决这一问题? –

+0

如果我复制并粘贴我的代码,我会得到上面的内容(请参阅添加的屏幕快照)。你也不明白吗? – PalimPalim

+0

当我将代码隔离在调试文件中时,它可以工作。但是,当我将它与已经先进的应用程序集成时,它不会显示3个按钮。 –