繁体   English   中英

在猕猴桃中制作下拉列表。 'NoneType'对象没有属性'add_widget'

[英]Making dropdown list in kivy. 'NoneType' object has no attribute 'add_widget'

我已经使用了可用的主题来改进我的代码,但是仍然无法正常工作。 正在运行的代码为我提供了Attribute error:'NoneType' object has no attribute 'add_widget'

class Datownik(DropDown):
    pass

class ZleceniaPojedyncze(Screen):
    dzienButton = ObjectProperty(None)
    miesiacButton = ObjectProperty(None)
    top_layout = ObjectProperty(Screen)   <------ changed
    rokButton = ObjectProperty(None)
    dd_btn = ObjectProperty(None)

    def __init__(self, *args, **kwargs):
        super(ZleceniaPojedyncze, self).__init__(*args, **kwargs)
        self.drop_down = Datownik()

        dropdown = DropDown()
        notes = ['alpha', 'beta', 'gamma', 'delta']
        for note in notes:

            btn = Button(text='bcda', size_hint_y=None, height=30)
            btn.bind(on_release=lambda btn: dropdown.select(btn.text))
            dropdown.add_widget(btn)

        mainbutton = Button(text='abcd')
        print("yay")

        mainbutton.bind(on_release=dropdown.open(self)) <--added self param.

        dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))

        self.top_layout.add_widget(mainbutton)

这是与之对应的kv文件:

<Datownik>:
Button:
    text: 'B1'
    height: 44
    on_release: root.select('item1')
Button:
    text: 'B2'
    height: 44
    on_release: root.select('item1')
Button:
    text: 'B3'
    height: 44
    on_release: root.select('item1')

<ZleceniaPojedyncze>:
name: 'zp'
dzienButton: dzienButtonID
dd_btn: btn_ddID    
top_layout: topLayoutID
GridLayout:
    id: topLayoutID
    height: self.minimum_height
    row_force_default: 'true'
    row_default_height: 30
    col_force_default: 'true'
    col_default_width: 70
    cols: 4
    padding: 70
    Button:
        id: dzienButtonID
        text: 'day'
    Button:
        id: btn_ddID
        text: 'month'
        on_release: root.drop_down.open(self)
    Button:
        text: 'year'
    Button:
        text: 'back'
        on_release: app.root.current = 'mm'

我现在只想通过一个按钮使用它,仅使用下拉菜单,稍后我将尝试找出哪个部分负责配置此菜单以适应我的需要,但是我想我以某种方式混淆了这些内容,无法继续进行。 有帮助吗?

您的top_layout被声明为ObjectProperty(None) ,然后在它为None时尝试向其添加小部件: self.top_layout.add_widget(mainbutton)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM