【问题标题】:AttributeError 'Button' object has no attribute scrlFBtnAttributeError 'Button' 对象没有属性 scrlFBtn
【发布时间】:2018-05-19 15:35:27
【问题描述】:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.uix.scrollview import ScrollView
from kivy.effects.scroll import ScrollEffect
from kivy.uix.widget import Widget
from kivy.uix.button import Button

class BSGameMain:
    def sas(self):
        # blmain.remove_widget(scrlFBtns)
        self.scrlFBtns.remove_widget(blbtns)

    blmain = BoxLayout(orientation = 'vertical') # MainBoxLayout init

    scrlFBtns = ScrollView(effect_cls = 'ScrollEffect')

    blbtns = BoxLayout(
        orientation = 'vertical',
        size_hint_y = None
        ) # BoxLayout for buttons

    blbtns.bind(minimum_height = blbtns.setter('height'))
    scrlFBtns.add_widget(blbtns)

    for i in range (2):
        blbtns.add_widget(Button(
            text='asd',
            size_hint_y = None,
            height = 40,
            on_press = sas
            ))

    lblmain = Label(text = 'asd')
    blmain.add_widget(lblmain)
    blmain.add_widget(scrlFBtns)


class BSApp(App):
    def build(self):
        game = BSGameMain()
        return game.blmain

if __name__ == "__main__":
    BSApp().run()

AttributeError 'Button' 对象没有属性 scrlFBtn。问题是什么?我正在努力做到这一点,以便当您单击时,屏幕被清除(小部件已被删除)。 Р请帮帮我=)

【问题讨论】:

    标签: python button kivy attributeerror


    【解决方案1】:

    您的代码有几个错误和不良的编程习惯:

      1234563 987654321@,所有代码都必须在类的方法中。
    • on_somepropertywait as parameter 接收参数的函数,在您的情况下,sas() 不接收它们,因此解决方案是使用 lambda 方法。


    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.label import Label
    from kivy.uix.scrollview import ScrollView
    from kivy.effects.scroll import ScrollEffect
    from kivy.uix.button import Button
    
    class BSGameMain:
        def __init__(self):
            self.blmain = BoxLayout(orientation = 'vertical') # MainBoxLayout init
    
            self.scrlFBtns = ScrollView(effect_cls = 'ScrollEffect')
    
            self.blbtns = BoxLayout(
                orientation = 'vertical',
                size_hint_y = None )
    
            self.blbtns.bind(minimum_height = self.blbtns.setter('height'))
            self.scrlFBtns.add_widget(self.blbtns)
    
            for i in range(2):
                self.blbtns.add_widget(Button(
                    text='asd',
                    size_hint_y = None,
                    height = 40,
                    on_press = lambda *args: self.sas()))
    
            lblmain = Label(text = 'asd')
            self.blmain.add_widget(lblmain)
            self.blmain.add_widget(self.scrlFBtns)
    
        def sas(self):
            self.scrlFBtns.remove_widget(self.blbtns)
    
    
    class BSApp(App):
        def build(self):
            game = BSGameMain()
            return game.blmain
    
    if __name__ == "__main__":
        BSApp().run()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多