Kivy 如何在 Spinner(下拉菜单)中添加更改日期

Kivy How to add changing Dates in Spinner (Dropdown)

我需要 Spinner Dropdown 的值包含 - 当前日期(无论用户打开应用程序的哪一天)...+ 从当前开始的下 10 个日期。 (注意 - 它应该会自动更新)

例如, 如果当前日期是 18/8/2021 我需要下拉菜单来显示:-


| Select 日期 ^ |


| 18/8/2021 |

| 19/8/2021 |

| 2021 年 8 月 |

| 2021 年 8 月 21 日 |

| 22/8/2021 |

| 2021 年 8 月 23 日 |

| 24/8/2021 |

| 25/8/2021 |

| 2021 年 8 月 26 日 |

| 2021 年 8 月 27 日 |

| 2021 年 8 月 28 日 |


Python代码:

from kivy.app import App
from kivy.uix.button import Button
from kivy.lang import Builder
from kivy.uix.widget import Widget
from kivy.uix.screenmanager import Screen,ScreenManager


class Main(Screen):
    pass

class Manager(ScreenManager):
    pass
kv=Builder.load_file("test1.kv")
screen=Manager()
screen.add_widget(Main(name="main"))

class Test(App):
    def build(self):
        return screen

Test().run()

Kv代码:

<Main>:
    name: "main"
    Spinner:
        id: date
        text: "Select Date"
        values: ["18/8/2021","19/8/2021"] #generated automatically
        size_hint: (.3,.1)
        pos_hint: {"center_x":.5,"center_y":.5}
        background_color: "#FFFFFF"
        background_normal: ""
        color: "#000000"

.py 文件:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
from datetime import datetime, timedelta

class Main(Screen):
    def on_kv_post(self, base_widget):
        self.ids["date"].values = [(datetime.now() + timedelta(days=i)).strftime('%d/%m/%Y') for i in range(10)]


class Manager(ScreenManager):
    pass


class Test(App):
    def build(self):
        return Builder.load_file("test1.kv")

Test().run()

.kv 文件:

<Main>:
    name: "main"
    Spinner:
        id: date
        text: "Select Date"
        size_hint: (.3,.1)
        pos_hint: {"center_x":.5,"center_y":.5}
        background_color: "#FFFFFF"
        background_normal: ""
        color: "#000000"

<Manager>:

Manager:
    Main: