Heim  >  Artikel  >  Backend-Entwicklung  >  Umgang mit DatePicker in Flet

Umgang mit DatePicker in Flet

Patricia Arquette
Patricia ArquetteOriginal
2024-09-26 08:41:42161Durchsuche

Manejo de DatePicker en Flet

Mein letztes Projekt in Flet erforderte die Implementierung von DatePicker. Schauen wir uns das Beispiel in der offiziellen Flet-Dokumentation an.

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)

In der Dokumentation wird nicht geklärt, ob die Eigenschaften first_date und last_date standardmäßig bei jeder Ausführung der Anwendung aktualisiert werden. Nehmen wir an, wir kompilieren eine App und die Parameter first_date und last_date werden wie im vorherigen Code beibehalten. Könnte dies zu Fehlern bei der Auswahl gültiger Daten in der Zukunft führen?

Meine App soll X (Twitter) zwischen zwei bestimmten Daten durchsuchen. Als ich versuchte, es intuitiv und benutzerfreundlich zu gestalten (als bereits kompilierte und ausführbare App), fragte ich mich bei der Durchsicht des Codes, was passieren würde, wenn die Parameter first_date und last_date die Werte beibehalten würden ​​zum Zeitpunkt des Schreibens der App zugewiesen. Wenn in einem Jahr jemand bis gestern kratzen wollte, könnte er das schaffen? Wie können wir sicherstellen, dass die Parameter dynamisch sind, sodass das Timing ab dem Zeitpunkt der Ausführung berechnet wird?

Im Zweifelsfall habe ich es so gelöst:

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)

Auf diese Weise stellen wir sicher, dass die auswählbaren Daten im Kalender unabhängig vom Zeitpunkt der Ausführung der Anwendung (kompiliert oder nicht) eine konfigurierbare zeitliche Aufzeichnung haben, wobei die Ausführung selbst als Anfangsparameter verwendet wird.

Dieser Ansatz ist auch nützlich für die Implementierung spezifischer Funktionen, die Einschränkungen bei auswählbaren Daten erfordern, z. B. nur die Auswahl von auswählbaren Daten , da es keinen Sinn macht, Daten in der Zukunft auszuwählen.

Welchen Sinn würde es beispielsweise in meiner Scraping-App machen, konfigurierbare Daten in der Zukunft zuzulassen, wenn die Aufgabe darin besteht, Informationen aus der Vergangenheit zu sammeln?

Das obige ist der detaillierte Inhalt vonUmgang mit DatePicker in Flet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn