Dobry wieczór,
Byłbym bardzo wdzięczny za pomoc. Próbuję zrobić Drop-Down List w kivy. Po pierwsze kod nie działa. Po drugie chciałbym wybór użytkownika zapisać jako input, spiklować i wykorzystać później w funkcji. Poniżej załączam tylko fragment kodu, który dotyczy problemu.
Builder.load_string('''
<DetailsLayout>
canvas.before:
BorderImage:
# BorderImage behaves like the CSS BorderImage
border: 10, 10, 10, 10
texture: self.background_image.texture
pos: self.pos
size: self.size
<SexDropDown>:
Button:
text: 'Male'
size_hint_y: None
height: 44
on_release: root.select('Male')
Button:
text: 'Female'
size_hint_y: None
height: 44
on_release: root.select('Female')
<DetailsScreen>:
DetailsLayout:
size_hint: .99, .99
pos_hint: {'center_x': .5, 'center_y': .5}
Button:
pos_hint: {'x': .01, 'y': .90}
size_hint: .50, .10
background_color:0, 0, 0, 0
on_press:
root.manager.current = "Main"
root.manager.transition.direction = 'left'
SexDropDown:
pos_hint: .5, .7
''')
class DetailsLayout(FloatLayout):
background_image = ObjectProperty(
Image(
source='Details.png'))
class DetailsScreen(Screen):
pass
class SexDropDown(DropDown):
pass
dropdown = SexDropDown()
mainbutton = Button(text='Select', size_hint=(None, None))
mainbutton.bind(on_release=dropdown.open)
dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
Błąd, który dostaje to: AttributeError: 'tuple' object has no attribute 'items'
Nie bardzo rozumiem też co się znajduje w ostatniej linijce - skopiowałem są ze strony kivy, wydaje mi się, że gdzieś tutaj powinien być ten input, tylko jak? Bardzo proszę o jakiś link gdzie podobny problem byłby rozwiązany.
Zanim zacząłem kivy kod wyglądał tak:
details = {}
details["activity"] = float(input("activity:"))
details["sex"] = str(input("sex:"))
details["weight"] = float(input("weight:"))
details["goal"] = str(input("goal:"))
Teraz muszę zrobić 4 listy i zapisać wyniki do jednego słownika "details"