我在 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_date 和 last_date 屬性是否在每次執行應用程式時預設更新。假設我們編譯了一個應用程序,並且 first_date 和 last_date 參數保留為前面的程式碼,這在將來選擇有效日期時會產生錯誤嗎?
我的應用程式旨在抓取兩個特定日期之間的 X (Twitter)。當希望使其直觀且易於使用時(作為已編譯和可執行的應用程式),在檢查程式碼時,我問自己如果參數first_date 和last_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中文網其他相關文章!