Почему мое выпадающее меню Kivy не отображается (Python)? - PullRequest
0 голосов
/ 25 мая 2019

В настоящее время я пытаюсь создать словарный тренажер с KIVY, чтобы я мог использовать его на своем телефоне.Но я как-то застрял в выпадающем меню.Я использовал образец выпадающего меню из kivy wiki и внес несколько изменений, чтобы он вписался в мой существующий код.Моя проблема в том, что выпадающее меню не отображается, и Python также не выдает ошибку.Я уже попробовал некоторые другие возможные решения, которые также не работали для меня, а также отладку с помощью try - кроме и отладчик pycharm.

class FloatLayout(FloatLayout):
    def __init__(self, **kwargs):
        super(FloatLayout, self).__init__(**kwargs)
        self.dropdown = DropDown()
        self.languages = ["language1", "language2", "language3"]
        for i in self.languages:
            btn = Button(text="%r" % i, size_hint_y=None, height=30)
            btn.bind(on_release=lambda btn: self.dropdown.select(btn.text))
            self.dropdown.add_widget(btn)

        self.dropdownButton = Button(text="Language selection", size_hint=(None, None), pos_hint={"x": 0.5, "top": 0.5})
        self.dropdownButton.bind(on_release=self.dropdown.open)
        self.dropdown.bind(on_select=lambda instance, x: setattr(self.dropdownButton, "text", x))
class KivyGUI(App):
    def build(self):
        return FloatLayout()
if __name__ == "__main__":
    runKivy()

Вся помощь и приветствуется.Спасибо!

1 Ответ

0 голосов
/ 25 мая 2019

Задача 1

Необходимо добавить self.dropdownButton к корневому виджету, FloatLayout.

self.add_widget(self.dropdownButton)

Задача 2

Заменить runKivy() на KivyGUI().run()

Фрагменты

        self.dropdown.bind(on_select=lambda instance, x: setattr(self.dropdownButton, "text", x))
        self.add_widget(self.dropdownButton)

class KivyGUI(App):
    def build(self):
        return FloatLayout()


if __name__ == "__main__":
    KivyGUI().run()

Выход

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...