android - 仅使用 kv 文件在 kivy 中创建 DropDown

标签 android python kivy

我想使用 DropDown 类获得一个简单的组合框,例如小部件。我可以使用 python 代码来完成,但是仅使用 kv 语言是否可以?

我尝试了以下方法。这是我的 python 代码:

class CustomDropDown(DropDown):
   pass

class MainForm(BoxLayout):
    pass

class MainApp(App):
    def build(self):
        self.dropdown = CustomDropDown()
        self.mainForm = MainForm()
        return self.mainForm
    def do_something(self):
        self.dropdown.open(self.mainForm)

MainApp().run()

这是 kv 文件:

<MainForm>:
    Button:
        text: 'Press'
        size_hint: [None,None]
        height: '40dp'
        on_release: app.do_something()
<CustomDropDown>:
    Button:
        text: 'First Item'
    Label:
        text: 'Disabled item'
    Button:
        text: 'Second Item'

但这不起作用。你能建议一下吗?如有任何帮助,我们将不胜感激。

最佳答案

是的,可以使用 kivy 语言。

您可以阅读 DropDownListSpinner通过这些链接。另外,如果您想了解更多有关他们工作的信息,您可能需要查看此 link for kivy-showcase

我认为代码是不言自明的。(on_select方法)

这是main.py文件

from kivy.app import App
from kivy.uix.dropdown import DropDown
from kivy.uix.boxlayout import BoxLayout

class CustomDropDown(BoxLayout):
    pass

class MainApp(App):
    def build(self):
        return CustomDropDown()
if __name__=='__main__':
    MainApp().run()

这是 main.kv 文件

<CustomDropDown>:

    Button:
        id: btn
        text: 'Press'
        on_release: dropdown.open(self)
        size_hint_y: None
        height: '48dp'

    DropDown:

        id: dropdown
        on_parent: self.dismiss()
        on_select: btn.text = '{}'.format(args[1])

        Button:
            text: 'First Item'
            size_hint_y: None
            height: '48dp'
            on_release: dropdown.select('First Item')

        Label:
            text: 'Second Item'
            size_hint_y: None
            height: '48dp'

        Button:
            text: 'Third Item'
            size_hint_y: None
            height: '48dp'
            on_release: dropdown.select('Third Item')

关于android - 仅使用 kv 文件在 kivy 中创建 DropDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847903/

相关文章:

linux - 在 pydev eclipse (Debian) 中配置 kivy 路径

android - 为什么我不能回复 PlayStore 评论?

python - Flutter web 中的 HTTP 触发 Cloud Function

python - 服务帐户没有对 Google Cloud Storage 的 storage.objects.get 访问权限

python - 不使用 kv 语言创建 Kivy 小部件?

python - 在RelativeLayout中嵌入GridLayout

java - 我正在 Linux 上安装 Android Studio

Android 服务正在运行,但它没有显示在设置 -> 正在运行的服务中

android - 如何在 Android 6.0 Marshmallow 中访问相机?

python - 按下按钮时执行函数,而不是脚本运行时执行函数