Итак, я пытаюсь написать простой код с использованием инфраструктуры kivy, мой код просматривает словарь на предмет определенного значения, которое сообщает моему коду на более позднем этапе, какие значения словаря должны быть выведены в виде выпадающего меню и какие Значения dict просто необходимо выводить как обычную метку и текстовый ввод. Теперь проблема заключается в том, что просматриваемый мной словарь описывает более одного значения, которое должно быть раскрывающимся. Я хочу, чтобы раскрывающийся список работал, когда в раскрывающемся списке выбрано значение, кнопка, которая вызывает раскрывающийся список, должна изменить текст на текст кнопки, на которой была нажата кнопка. Вот код, я решил написать более простую версию для читабельности. Я хотел напечатать это под кодом, но я действительно отстой в написании вопросов по стеку Over Flow. Код, который вы собираетесь просмотреть, создает две кнопки (которые вызывают раскрывающиеся списки), одну именованную группу 0 и другую именованную группу 1, однако, когда я нажимаю одну из раскрывающихся кнопок в группе 0, текстовый атрибут группы 1 изменяется, но Я хочу изменить текстовый атрибут кнопки группы 0. У меня есть репутация не иметь смысла, когда я объясняю, поэтому дайте мне знать, если вам нужна ясность, любая помощь будет оценена.
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
test_floatie = FloatLayout()
# We wanna create 2 button that trigger a drop down
i = 0
# The loop that creates the two buttons
while i < 2:
# Create a drop down
dropdown = DropDown()
for index in range(10):
# Creating our button
btn = Button(text="Button"+str(index), size_hint_y=None, height=44)
# Sending button info to dropdown select function
btn.bind(on_release=lambda btn: dropdown.select(btn.text))
# Closing drop down after selection
btn.bind(on_release=dropdown.dismiss)
# Adding buttons to the drop down
dropdown.add_widget(btn)
# Simple if statement for positioning
if i == 0:
position = "left"
else:
position = "right"
# The button that triggers the drop down
dropButton = Button(text="Group"+str(i), size_hint=(0.4, 0.3), pos_hint={"top":1, position:1})
print(dropButton)
# Binding the button to a function that triggers the drop down
dropButton.bind(on_release=dropdown.open)
# Using the drop down select function to change the text of the button that triggers the drop down
dropdown.bind(on_select=lambda instance, x: setattr(dropButton, "text", x))
test_floatie.add_widget(dropButton)
i = i +1
# Running la app
class MainApp(App):
def build(self):
return test_floatie
MainApp().run()