>백엔드 개발 >파이썬 튜토리얼 >Flet에서 DatePicker 처리

Flet에서 DatePicker 처리

Patricia Arquette
Patricia Arquette원래의
2024-09-26 08:41:42370검색

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 매개변수가 값을 유지하면 어떻게 될지 스스로에게 물었습니다. ​​앱 작성 시 할당됩니다. 1년 안에 누군가가 어제까지스크래핑하고 싶었다면 과연 할 수 있을까요? 실행 시점부터 타이밍이 계산되도록 매개변수가 동적인지 어떻게 보장할 수 있습니까?

의심스러울 때는 다음 방법으로 해결했습니다.

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으로 문의하세요.