0
我已經使用了可用的主題來改進我的代碼,但仍然不起作用。運行代碼給我Attribute error:'NoneType' object has no attribute 'add_widget'
。在kivy中製作下拉列表。 'NoneType'對象沒有屬性'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)
,這裏是coresponding 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'
我只希望把它與一個按鈕的工作現在,只需下拉菜單,以後我會嘗試找出哪一部分做什麼爲我的需要配置此菜單,但我想我混淆了事情,不能繼續。 Any1有幫助嗎?
好吧,所以我改變了屏幕和其他東西的對象屬性,所有來到我的頭。當設置爲Screen屬性時,它返回TypeError:add_widget()缺少1個需要的位置參數:'小部件'。我應該設置什麼屬性? – LSM
首先,我沒有辦法知道你改變了什麼。其次,'TypeError:add_widget()缺少1個參數'意味着你不能只使用'layout.add_widget()'而不使用小部件。例如,可以使用'layout.add_widget(button)'。 –
首先想說我認識你的幫助。那很好。過了一段時間,我意識到小部件缺少參數時出現了什麼問題,我將該屬性留作屏幕,但在更改之後還有另一個錯誤。 DropDownException:無法在隱藏的小部件上打開下拉列表。可愛的「top_widget」並不是真正的頂級部件。這一定是使用屏幕管理器的後果,有什麼辦法解決它? – LSM