Projek terakhir saya di Flet memerlukan pelaksanaan DatePicker. Mari lihat contoh yang disediakan oleh dokumentasi rasmi 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)
Dokumentasi tidak menjelaskan sama ada sifat first_date dan last_date dikemas kini secara lalai selepas setiap pelaksanaan aplikasi. Katakan kita menyusun apl dan parameter first_date dan last_date disimpan seperti dalam kod sebelumnya, bolehkah ini menjana ralat semasa memilih tarikh yang sah pada masa hadapan?
Apl saya bertujuan untuk mengikis X (Twitter) antara dua tarikh tertentu. Apabila ingin menjadikannya intuitif dan mudah digunakan (sebagai apl yang telah disusun dan boleh dilaksanakan), menyemak kod itu, saya bertanya kepada diri sendiri apa yang akan berlaku jika parameter first_date dan last_date mengekalkan nilai ditetapkan pada masa menulis apl. Jika dalam setahun, ada yang ingin mengikis sehingga semalam, bolehkah mereka melakukannya? Bagaimanakah kita boleh memastikan bahawa parameter adalah dinamik supaya masa dikira dari masa pelaksanaan?
Apabila ragu-ragu, saya menyelesaikannya dengan cara ini:
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)
Dengan cara ini, kami memastikan bahawa tidak kira saat di mana aplikasi itu dilaksanakan (disusun atau tidak), tarikh yang boleh dipilih dalam kalendar akan mempunyai rekod temporal boleh dikonfigurasikan dengan mengambil pelaksanaan itu sendiri sebagai parameter awal.
Pendekatan ini juga berguna untuk melaksanakan ciri khusus yang memerlukan pengehadan pada tarikh yang boleh dipilih, seperti hanya membenarkan pemilihan sehingga kini, kerana tidak masuk akal untuk memilih tarikh pada masa hadapan.
Sebagai contoh, dalam apl mengikis saya, apakah maksudnya untuk membenarkan tarikh boleh dikonfigurasikan pada masa hadapan apabila tugasnya adalah untuk mengumpul maklumat dari masa lalu?
Atas ialah kandungan terperinci Mengendalikan DatePicker dalam Flet. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!