在kivy中创建只有kv fi的下拉列表

2024-03-28 14:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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'

但这不管用。你能给我提些建议吗?如有任何帮助,我们将不胜感激。


Tags: 代码textselfdefbuttonpassdoclass
1条回答
网友
1楼 · 发布于 2024-03-28 14:55:57

是的,可以用基维语。

您可以通过这些链接阅读有关DropDownListSpinner的内容。如果你想知道更多关于他们工作的信息,你可以检查一下这个link for kivy-showcase

我认为代码是不言而喻的

这是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')

相关问题 更多 >