Не знаю, почему мой выпадающий список Kivy не отображается - PullRequest
0 голосов
/ 21 февраля 2020

По какой-то причине мой выпадающий список kivy не отображается, и я следую точному методу из документации. Все еще безрезультатно. Я ценю любую помощь. Вот мой код.

class NewProjectScreen(Screen):


    def __init__(self, **kwargs):
        super(NewProjectScreen, self).__init__(**kwargs)
        self.location = TextInput(multiline = True, pos_hint = {"center_x": 0.5, "center_y": 0.6}, hint_text = "Location", size_hint = [0.4, 0.10], font_name = 'fonts/Qanelas-Light.otf', id = "location")
        self.add_widget(self.location)
        self.location.bind(text = self.dropdown)


    def dropdown(self, instance, value):
        if len(self.location.text) > 0:
            towns_cities = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json?input=' + self.location.text + "&inputtype=textquery&fields&types=geocode&sensor=false&types=regions&key=" + API_KEY
            response = urllib.request.urlopen(towns_cities).read()
            directions = json.loads(response)
            print(directions)
            for places in directions:
                place = places
            self.dropdown = DropDown()
            for index in range (5):
                btn = Button(text = places[index])
                self.dropdown.add_widget(btn)
                btn.bind(on_release=lambda btn: self.dropdown.select(btn.text))
            self.dropdown.open(btn)

1 Ответ

0 голосов
/ 22 февраля 2020

Несколько проблем с вашим кодом.

  • Ваш код self.dropdown = DropDown() переопределяет self.dropdown, который является методом вашего NewProjectScreen класса. Я предлагаю рефакторинг, чтобы изменить имя этого метода.
  • Ваш код self.dropdown.open(btn) пытается присоединить DropDown к одной из своих собственных кнопок (вероятно, не будет работать). Я предлагаю заменить это на self.dropdown.open(self.location).
  • Как упомянуто в документации «При добавлении виджетов нам нужно указать высоту вручную». Я предлагаю изменить ваше Button создание на btn = Button(text = places[index], size_hint=(1, None), height=50).

Я полагаю, что приведенные выше изменения приведут ваш код в действие.

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