【Flet】テキストフィールドに日付を表示する【Python】
2025年3月19日Flet,Python
テキストフィールドに日付を表示する
テキストフィールドに日付を表示する
日付の表示
概要
- 日付範囲を指定するテキストフィールドを設定する
- 以下の初期値を設定する
日付の編集とチェック
概要
- 入力された日付のチェックをする
- 日付の形式が正しいか
- 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 になっていないためボタンが非活性
