首頁  >  文章  >  後端開發  >  在 Flet 中處理 DatePicker

在 Flet 中處理 DatePicker

Patricia Arquette
Patricia Arquette原創
2024-09-26 08:41:42294瀏覽

Manejo de DatePicker en Flet

我在 Flet 中的上一個專案需要實作 DatePicker。我們來看看 Flet 官方文件提供的範例。

import datetime
import flet as ft


def main(page: ft.Page):
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    def handle_change(e):
        page.add(ft.Text(f"Date changed: {e.control.value.strftime('%Y-%m-%d')}"))

    def handle_dismissal(e):
        page.add(ft.Text(f"DatePicker dismissed"))

    page.add(
        ft.ElevatedButton(
            "Pick date",
            icon=ft.icons.CALENDAR_MONTH,
            on_click=lambda e: page.open(
                ft.DatePicker(
                    first_date=datetime.datetime(year=2023, month=10, day=1),
                    last_date=datetime.datetime(year=2024, month=10, day=1),
                    on_change=handle_change,
                    on_dismiss=handle_dismissal,
                )
            ),
        )
    )

ft.app(main)

文件沒有闡明 first_datelast_date 屬性是否在每次執行應用程式時預設更新。假設我們編譯了一個應用程序,並且 first_datelast_date 參數保留為前面的程式碼,這在將來選擇有效日期時會產生錯誤嗎?

我的應用程式旨在抓取兩個特定日期之間的 X (Twitter)。當希望使其直觀且易於使用時(作為已編譯和可執行的應用程式),在檢查程式碼時,我問自己如果參數first_datelast_date 保持值會發生什麼在編寫應用程式時分配。如果一年後,有人想到昨天,他們能做到嗎?如何確保參數是動態的,以便從執行時間開始計算時間?

有疑問時,我是這樣解決的:

import datetime
import flet as ft

# Crear una variable para la fecha actual de la ejecución
today = datetime.datetime.now()

def main(page: ft.Page):
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER

    def handle_change(e):
        page.add(ft.Text(f"Date changed: {e.control.value.strftime('%Y-%m-%d')}"))

    def handle_dismissal(e):
        page.add(ft.Text(f"DatePicker dismissed"))

    page.add(
        ft.ElevatedButton(
            "Pick date",
            icon=ft.icons.CALENDAR_MONTH,
            on_click=lambda e: page.open(
                ft.DatePicker(

                    # Configuramos las variables para que un calendario válido desde hace un año a hoy y durante un año a futuro
                    first_date=datetime.datetime(year=today.year - 1, month=today.month, day=today.day),
                    last_date=datetime.datetime(year=today.year + 1, month=today.month, day=today.day),

                    on_change=handle_change,
                    on_dismiss=handle_dismissal,
                )
            ),
        )
    )

ft.app(main)

透過這種方式,我們確保無論應用程式執行的時刻(編譯與否),日曆中的可選日期都將具有可配置的時間記錄,以執行本身作為初始參數。

此方法對於實現需要限制可選擇日期的特定功能也很有用,例如僅允許選擇到日期,因為選擇未來的日期是沒有意義的。

例如,在我的抓取應用程式中,當任務是收集過去的資訊時,允許配置未來的日期有什麼意義?

以上是在 Flet 中處理 DatePicker的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn