为什么我的kivy下拉菜单没有显示(Python)?

时间:2019-05-25 14:43:23

标签: python drop-down-menu 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 :(得分:0)

问题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