"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Manipulando DatePicker no Flet

Manipulando DatePicker no Flet

Publicado em 2024-11-06
Navegar:575

Manejo de DatePicker en Flet

Meu último projeto no Flet exigiu a implementação de DatePicker. Vejamos o exemplo que fornece a documentação oficial do 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)

A documentação não é clara se as propriedades first_date e last_date foram atualizadas por defeito antes de cada execução do aplicativo. Supondo que compilamos um aplicativo e os parâmetros de first_date e last_date sejam mantidos como no código anterior, isso poderia gerar erros no momento de selecionar datas válidas no futuro?

Meu aplicativo foi projetado para realizar scraping no X (Twitter) entre datas determinadas. Ao pesquisar para torná-lo intuitivo e fácil de usar (como um aplicativo compilado e executável), revisando o código, eu me pergunto o que aconteceria se os parâmetros first_date e last_date mantivessem os valores julgados nos momentos de escrita o aplicativo. Se dentro de um ano, alguém quisesse raspar hasta ayer, você poderia fazer isso? Como poderíamos ter certeza de que os parâmetros são dinâmicos para que a temporalidade seja calculada a partir do momento da execução?

Ante a duda, resolví desta maneira:

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)

Deste modo, nos garantimos que, independentemente do momento em que o aplicativo for executado (compilado ou não), as datas selecionáveis ​​no calendário tenderão a um registro temporal configurável, tomando como parâmetro inicial a mesma execução.

Esta abordagem também resulta útil para implementar funcionalidades específicas que exigem limitações para as datas selecionáveis, como permitir apenas selecionar até o dia de hoje, pois não teria sentido eleger datas futuras.

Por exemplo, em meu aplicativo de scraping, o que sentido seria permitir que datas configuráveis ​​no futuro quando a tarefa fosse coletar informações do passado?

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/matzalazar/manejo-de-datepicker-en-flet-1g1p?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3