مكون أساسي لعرض النصوص بأنماط مختلفة
مكون Text هو العنصر الأساسي لعرض النصوص في واجهة المستخدم. يمكن تخصيص النص بخصائص متعددة مثل الحجم واللون والخط والمحاذاة وغيرها.
import flet as ft
def main(page: ft.Page):
page.add(
ft.Text(value="نص عادي بالخصائص الافتراضية"),
ft.Text(
value="نص بحجم وخصائص مخصصة",
size=30,
color="blue",
weight="bold",
italic=True,
),
)
ft.app(target=main)
نتيجة التنفيذ:
نص عادي بالخصائص الافتراضية
نص بحجم وخصائص مخصصة
الخاصية | النوع | الوصف | القيمة الافتراضية |
---|---|---|---|
value | str | محتوى النص الذي سيتم عرضه | "" |
size | float | حجم الخط بالبكسل | 14.0 |
color | str | لون النص (اسم أو قيمة hex) | None |
weight | str | وزن الخط (bold, normal, w100-w900) | "normal" |
italic | bool | جعل النص مائلًا | False |
font_family | str | نوع الخط المستخدم | None |
text_align | TextAlign | محاذاة النص (CENTER, LEFT, RIGHT...) | None |
selectable | bool | السماح للمستخدم بتحديد النص | False |
no_wrap | bool | منع النص من الالتفاف للسطر التالي | False |
max_lines | int | الحد الأقصى لعدد الأسطر | None |
import flet as ft
def main(page: ft.Page):
page.add(
ft.Text(
value="هذا نص بمحاذاة لليمين (الافتراضي في RTL)",
size=16,
width=300,
bgcolor="#f0f0f0",
text_align=ft.TextAlign.RIGHT,
),
ft.Text(
value="هذا نص بمحاذاة للوسط",
size=16,
width=300,
bgcolor="#e0e0e0",
text_align=ft.TextAlign.CENTER,
),
ft.Text(
value="هذا نص بمحاذاة لليسار",
size=16,
width=300,
bgcolor="#d0d0d0",
text_align=ft.TextAlign.LEFT,
),
)
ft.app(target=main)
نتيجة التنفيذ:
import flet as ft
def main(page: ft.Page):
page.add(
ft.Text(
"هذا نص طويل يمتد على عدة أسطر وسيتم عرضه بالكامل مع التفاف تلقائي للسطور لملاءمة العرض المتاح. يمكنك استخدام هذا النوع من النصوص لعرض فقرات طويلة من المعلومات.",
width=300,
),
ft.Divider(),
ft.Text(
"هذا نص طويل لكن محدود بسطرين فقط. ستلاحظ قطع النص الزائد واستبداله بنقاط الحذف (...) لإشارة إلى وجود نص إضافي.",
width=300,
max_lines=2,
),
ft.Divider(),
ft.Text(
"هذا نص بدون التفاف سيستمر أفقيًا ولن يتم قطعه إلى سطر جديد حتى لو تجاوز حدود العرض المتاح.",
no_wrap=True,
),
)
ft.app(target=main)
نتيجة التنفيذ:
هذا نص طويل يمتد على عدة أسطر وسيتم عرضه بالكامل مع التفاف تلقائي للسطور لملاءمة العرض المتاح. يمكنك استخدام هذا النوع من النصوص لعرض فقرات طويلة من المعلومات.
هذا نص طويل لكن محدود بسطرين فقط. ستلاحظ قطع النص الزائد واستبداله بنقاط الحذف (...) لإشارة إلى وجود نص إضافي.
هذا نص بدون التفاف سيستمر أفقيًا ولن يتم قطعه إلى سطر جديد حتى لو تجاوز حدود العرض المتاح.
import flet as ft
def main(page: ft.Page):
# إنشاء عنصر نص سيتم تحديثه
text_output = ft.Text(
value="انقر على الزر لتحديث النص",
size=20,
color="blue",
)
counter = 0
def update_text(e):
nonlocal counter
counter += 1
# تحديث قيمة النص
text_output.value = f"تم النقر على الزر {counter} مرات"
# تغيير لون النص
text_output.color = "green" if counter % 2 == 0 else "purple"
# يجب استدعاء page.update() لتحديث الواجهة
page.update()
page.add(
text_output,
ft.ElevatedButton(
text="تحديث النص",
on_click=update_text,
),
)
ft.app(target=main)
نتيجة التنفيذ:
انقر على الزر لتحديث النص
* في التطبيق الفعلي، سيتغير النص واللون عند النقر
page.rtl = True
لإعداد التطبيق للعمل من اليمين إلى اليسار.font_family
مثل "Cairo" أو "Tajawal".selectable=True
للنصوص التي قد يرغب المستخدم في نسخها.overflow
للتحكم في كيفية عرض النص الزائد عن المساحة المتاحة.value
ثم استدعي page.update()
.حقل إدخال نصي للحصول على بيانات المستخدم
مكون TextField هو عنصر إدخال يسمح للمستخدمين بكتابة نص. يمكن تخصيصه بالعديد من الخصائص مثل التسمية والنص التلميحي وأيقونات وأنماط مختلفة من الإدخال.
import flet as ft
def main(page: ft.Page):
page.add(
ft.TextField(
label="الاسم",
hint_text="أدخل اسمك هنا",
width=400,
),
ft.TextField(
label="البريد الإلكتروني",
hint_text="[email protected]",
width=400,
),
)
ft.app(target=main)
نتيجة التنفيذ:
import flet as ft
def main(page: ft.Page):
page.add(
ft.Text("أنواع مختلفة من حقول الإدخال:", size=16, weight="bold"),
# حقل نص عادي
ft.TextField(
label="نص عادي",
width=400,
),
# حقل كلمة مرور
ft.TextField(
label="كلمة المرور",
password=True, # إخفاء النص
can_reveal_password=True, # السماح بإظهار كلمة المرور
width=400,
),
# حقل متعدد الأسطر
ft.TextField(
label="ملاحظات متعددة الأسطر",
multiline=True, # تفعيل تعدد الأسطر
min_lines=3, # الحد الأدنى من الأسطر
max_lines=5, # الحد الأقصى من الأسطر
width=400,
),
# حقل مع عدد
ft.TextField(
label="العمر",
keyboard_type=ft.KeyboardType.NUMBER, # لوحة مفاتيح رقمية
prefix_text="عمر: ", # نص قبل الإدخال
suffix_text=" سنة", # نص بعد الإدخال
width=400,
),
# حقل بأيقونات
ft.TextField(
label="البحث",
prefix_icon=ft.icons.SEARCH, # أيقونة في البداية
suffix_icon=ft.icons.CLEAR, # أيقونة في النهاية
width=400,
),
)
ft.app(target=main)
import flet as ft
import re
def main(page: ft.Page):
# عنصر لعرض رسائل التحقق
validation_text = ft.Text(color="red")
# نص للعرض
output_text = ft.Text(size=16)
# التحقق من البريد الإلكتروني
def validate_email(e):
email_value = email_field.value
if not email_value:
validation_text.value = "الرجاء إدخال البريد الإلكتروني"
elif not re.match(r"[^@]+@[^@]+\.[^@]+", email_value):
validation_text.value = "البريد الإلكتروني غير صالح"
email_field.border_color = "red"
else:
validation_text.value = ""
email_field.border_color = "green"
output_text.value = f"مرحباً {name_field.value}! تم تسجيل بريدك الإلكتروني: {email_value}"
page.update()
# تحديث مباشر مع كل تغيير
def on_name_change(e):
name = e.control.value
if name:
output_text.value = f"مرحباً {name}!"
else:
output_text.value = ""
page.update()
# حقول الإدخال
name_field = ft.TextField(
label="الاسم",
on_change=on_name_change,
width=400,
)
email_field = ft.TextField(
label="البريد الإلكتروني",
width=400,
helper_text="أدخل بريدك الإلكتروني بصيغة صحيحة",
)
# إضافة العناصر للصفحة
page.add(
name_field,
email_field,
ft.ElevatedButton("تحقق", on_click=validate_email),
validation_text,
output_text,
)
ft.app(target=main)
الخاصية | النوع | الوصف |
---|---|---|
value | str | قيمة الحقل النصية |
label | str | تسمية الحقل |
hint_text | str | نص تلميحي يظهر عندما يكون الحقل فارغًا |
helper_text | str | نص مساعد يظهر أسفل الحقل |
password | bool | جعل الحقل مخصص لكلمات المرور (إخفاء النص) |
multiline | bool | السماح بإدخال نص متعدد الأسطر |
prefix_icon / suffix_icon | str | أيقونة تظهر في بداية/نهاية الحقل |
prefix_text / suffix_text | str | نص يظهر في بداية/نهاية الحقل |
on_change | callable | دالة تستدعى عند تغيير قيمة الحقل |
on_submit | callable | دالة تستدعى عند الضغط على Enter |
keyboard_type
لتحديد نوع لوحة المفاتيح المناسب (رقمية، بريد إلكتروني، الخ).helper_text
لمساعدة المستخدم في فهم المطلوب.on_change
للاستجابة الفورية لمدخلات المستخدم، وon_submit
للإجراءات عند الانتهاء.disabled
لتعطيل الحقل في سيناريوهات معينة.text_align=TextAlign.RIGHT
و page.rtl=True
.