【Flet】テキストフィールドに日付を表示する【Python】

2025年3月19日Flet,Python

テキストフィールドに日付を表示する


テキストフィールドに日付を表示する

日付の表示

概要

  • 日付範囲を指定するテキストフィールドを設定する
  • 以下の初期値を設定する
    • From:処理実行日
    • To:処理実行日 + 1日

日付の編集とチェック

概要

  • 入力された日付のチェックをする
    • 日付の形式が正しいか
    • From と To の指定が正しいか
import flet as ft
import re

from datetime import datetime
from datetime import timedelta

def main(page: ft.Page):

    # 日付の表示形式チェック
    def validate_date_format(date_text) -> bool:
        # YYYY/MM/DD 形式になっているかチェック
        date_pattern = r'^\d{4}/\d{2}/\d{2}$'
        if re.match(date_pattern, date_text):
            return True
        return False

    # 日付が編集されたら入力値のチェックを行う
    def on_text_change(e):
        if validate_date_format(e.control.value):
            if datetime.strptime(date_from_field.value, '%Y/%m/%d') <= datetime.strptime(date_to_field.value, '%Y/%m/%d'):
                button.disabled = False
        else:
            button.disabled = True
        page.update()

    # 日付入力フィールドに初期日付を設定する
    date_from_field = ft.TextField(datetime.now().strftime('%Y/%m/%d'), width=120, on_change=on_text_change)
    date_to_field = ft.TextField((datetime.now() + timedelta(days=1)).strftime('%Y/%m/%d'), width=120, on_change=on_text_change)

    # 日付入力後の処理を想定したボタンを配置する
    button = ft.ElevatedButton(text='日付入力が正しいと活性化')

    # 画面サイズ
    page.window_width = 300
    page.window_height = 300

    # from to を並べて配置する
    date_fields = ft.Row([date_from_field, ft.Text('~'), date_to_field])

    page.add(date_fields, button)

# Fletアプリケーションを実行
ft.app(target=main)

起動直後の画面

From が To より未来になっているためボタンが非活性

日付が YYYY/MM/DD になっていないためボタンが非活性

Flet,Python

Posted by junichi