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?
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