[英]Kivy: AttributeError: 'NoneType' object has no attribute '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.