Flet kutubxonasi
Flet — bu Python uchun cross-platform GUI (grafik interfeys) kutubxonasi bo‘lib, Flutter asosida qurilgan, web, desktop va mobil ilovalarni tezda yaratishga mo‘ljallangan. Quyida Flet kutubxonasining asosiy tushunchalari, metodlari va funksiyalari (kontrolleri, sahifa interfeysi, eventlar, layout’lar va boshqalar) to‘liqroq ko‘rib chiqamiz.
1. Asosiy tushunchalar
Flet’ning barcha UI elementlari — tugmalar, matn, kiritish maydonlari va boshqalar — control sinfidan meros olinadi.
Ilovaning asosiy oynasi / sahifasi — bu yerda control’lar joylanadi. main(page: Page) tipik boshlang‘ich funksiya. Flet+1
Ilovani ishga tushuruvchi funksiya. target=main orqali asosiy funksiya beriladi. Flet+1
Layouth va tashkiliy eltish uchun control’lar ro‘yxati — masalan, Column, Row, Stack kabi container control’lar. Flet+2Medium+2
Masalan, tugma bosilganda, matn maydonidagi o‘zgarishda — on_click, on_change, va boshqalar. Callback funksiyalar odatda bir parametr (event obyekti, e) oladi. Stack Overflow+2Flet+2
2. Layout va joylashuv (Layout & Positioning)
Flet’da elementlar sahifaga qanday joylanadi, tartiblanishi va tarqoq ko‘rinishi uchun bir qancha kontrollerlar va parametrlar mavjud:
Kontrollerini gorizontal yo‘nalishda joylashtiradi (chapdan o‘ngga). Flet
Kontrollerini vertikal yo‘nalishda joylashtiradi (yuqoridan pastga). Flet
Elementlar ustma-ust (layered) tarzda joylana oladi — masalan, fon rasmi, ustiga matn va boshqalar. LabDeck
Stack ichida joylashishni (koordinatalar, top/left va hk) belgilash uchun ishlatiladi. LabDeck
Masalan, TextField(expand=True) yoki boshqa kontrollerlarda ishlatiladi, bo‘sh joyni kengaytirib olish uchun. Flet
horizontal_alignment, vertical_alignment, alignment kabi parametrlar bilan container ichida joylashuv, yo‘nalish sozlanadi. Flet+1
3. Asosiy kontrollerlar (Controls)
Flet da turli UI elementlar mavjud. Ba’zilari:
Tanlash uchun boshqa variantlar.
Button, ElevatedButton, FilledButton, OutlinedButton
Materyal dizaynidagi “floating” tugma.
Sahifa ichida tabs navigatsiyasi.
Dialog, AlertDialog, BottomSheet
Foydalanuvchi bilan dialog oynalari, bildirishnomalar.
Sahifaning yuqori qismi (title bar, action ikonalar bilan).
DataTable, DataRow, DataColumn, DataCell
Jadval ko‘rinishida ma’lumotlarni chiqarish.
4. Sahifa (Page) bilan ishlash
Page obyekti Flet ilovasining markaziy obyekti hisoblanadi:
Oyna nomini o‘rnatadi. Flet+1
Sahifaga control qo‘shadi. Flet+1
UI ni yangilash — control’larda o‘zgartirishlar qilinsa, ularni ekranga aks ettirish. Flet+1
page.horizontal_alignment, page.vertical_alignment
Sahifadagi kontentning ikkala yo‘nalishdagi tartibi. Flet
Async funksiya yoki kod qismini fon vazifasida bajarish imkoniyati. Python in Plain English
page.run_thread(handler, *args)
Sync vazifani alohida threadda ishga tushirish. Python in Plain English
5. Eventlar va callback’lar
Flet ilovalarida foydalanuvchi bilan interaktivlik uchun callback’lar ishlatiladi:
on_click, on_change, on_submit va hokazo
Kontrollerga tegishli hodisalar — tugma bosilganda, qiymat o‘zgarganda va boshqalar. Callback funksiyalar odatda event obyekti (e) oladi. Flet+1
e.control, e.data, e.page, e.name
Event objekti orqali ushbu ma’lumotlarga kirish; masalan, qaysi kontrol bosilgan, qo‘shimcha ma’lumot, sahifa va event nomi. Stack Overflow
6. Sinxron / asinxron kod
Flet 0.21 versiyasidan boshlab asinxronlik va sinxron kodni aralashtirish imkoniyati yaxshilandi. Python in Plain English
on_clickkabi event handler’lar sinxron yoki asinxron bo‘lishi mumkin.page.run_task(...)yordamida async funksiyalar chaqirilishi mumkin.page.run_thread(...)yordamida sync vazifalar alohida thread’da bajarilishi mumkin. Python in Plain English
7. Hayot sikli va adaptive / platformga moslik
- Ilovaning turli holatlari (masalan, ko‘rinishi, yashiringanligi / tiklanishi) uchun
on_app_lifecycle_state_changekabi eventlar bor. Python in Plain English - Kontrollerlarning
adaptivexususiyati: agar bir nazarda material yoki Cupertino (iOS) ko‘rinishi kerak bo‘lsa — platformaga qarab mos ko‘rinishni tanlash. Python in Plain English
Flet kutubxonasi juda keng va ko‘p widgetlar, metodlar, funksiyalarni o‘z ichiga oladi, ularni to‘liq bitta javobga sig‘dirish qiyin. Lekin quyida Fletda eng muhim va ko‘p ishlatiladigan metodlar va funksiyalarni to‘liq ro‘yxatda taqdim qilaman.
FLET KUTUBXONASI — TO‘LIQ ASOSIY METODLAR VA FUNKSIYALAR RO‘YXATI
1. Dastur ishga tushirish va boshqarish
Funksiya / Metod Tavsifi ft.app(target=func) Dastur ishga tushadi, func — asosiy funksiya (target). page.go(route) Sahifani boshqa route (manzil) ga o‘tkazadi. page.update() Sahifani yangilaydi. page.add(*widgets) Sahifaga widget qo‘shadi. page.remove(widget) Sahifadagi widgetni olib tashlaydi. page.clean() Sahifadagi barcha widgetlarni tozalaydi.
2. Widgetlar bilan ishlash (asosiy metodlar)
Metod Tavsifi widget.update() Widgetni yangilaydi, o‘zgarishlarni ekranga chiqaradi. widget.focus() Widgetga fokus beradi (matn maydonlari uchun). widget.clear() Widget qiymatini tozalaydi (agar mavjud bo‘lsa). container.add(*widgets) Kontainerga bir nechta widget qo‘shadi. container.remove(widget) Kontainerdan widget olib tashlaydi. container.clear() Kontainer ichidagi barcha widgetlarni olib tashlaydi.
3. Asosiy widgetlar va ularning atributlari/metodlari
Widget Atribut / Metod Tavsifi Text value Ko‘rsatiladigan matn. update() Matnni yangilaydi. ElevatedButton text Tugma ustidagi matn. on_click Tugma bosilganda chaqiriladigan funksiya. TextField value Kiruvchi matn qiymati. on_change Matn o‘zgarganda chaqiriladigan funksiya. focus() Fokusni ushbu maydonga beradi. Checkbox value Belgi qo‘yilgan yoki yo‘qligini bildiradi. on_change Holat o‘zgarganda chaqiriladigan funksiya. Slider value Joriy qiymat. on_change Qiymat o‘zgarganda chaqiriladigan funksiya. Dropdown options Tanlovlar ro‘yxati. value Tanlangan qiymat. on_change Tanlov o‘zgarganda chaqiriladigan funksiya. Image src Rasm manzili.
4. Layout widgetlari
Widget Tavsifi Column Widgetlarni ustun (vertikal) tarzda joylashtiradi. Row Widgetlarni qator (gorizontal) tarzda joylashtiradi. Container Ichida bitta widget saqlaydi, ko‘rinish va o‘lchamlarni boshqaradi.
5. Ko‘p ishlatiladigan hodisalar (eventlar)
Hodisa Tavsifi on_click Tugma yoki boshqa element bosilganda chaqiriladi. on_change Input yoki tanlov qiymati o‘zgarganda chaqiriladi. on_submit Matn maydonida Enter bosilganda chaqiriladi.
6. Qisqacha misollar
Tugma bosilganda matnni o‘zgartirish
import flet as ft
def main(page: ft.Page):
txt = ft.Text("Salom, dunyo!")
btn = ft.ElevatedButton(text="Bos", on_click=lambda e: txt.update(value="Tugma bosildi!"))
page.add(txt, btn)
ft.app(target=main)
TextFieldga matn kirgizib, darhol ko‘rsatish
import flet as ft
def main(page: ft.Page):
txt = ft.Text()
input = ft.TextField(on_change=lambda e: txt.update(value=e.control.value))
page.add(input, txt)
ft.app(target=main)
Layout: Column va Row misoli
import flet as ft
def main(page: ft.Page):
col = ft.Column([
ft.Text("Ustun ichidagi matn 1"),
ft.Text("Ustun ichidagi matn 2"),
ft.Row([
ft.Text("Qator ichidagi matn A"),
ft.Text("Qator ichidagi matn B")
])
])
page.add(col)
ft.app(target=main)
Qo‘shimcha resurslar
- Rasmiy hujjatlar: https://flet.dev/docs
- GitHub: https://github.com/flet-dev/flet
Agar xohlasangiz, men sizga kerakli widget yoki metod bo‘yicha yanada chuqurroq misollar va tushuntirishlar bera olaman. Sizga aynan qaysi jihatlari qiziq?