Flet Dev Docs Controls
Flet Dev Docs Controls
Controls reference
Flet UI is built of controls. Controls are organized into hierarchy, or a tree, where each control
has a parent (except Page) and container controls like Column, Dropdown can contain child
controls, for example:
Page
├─ TextField
├─ Dropdown
│ ├─ Option
│ └─ Option
└─ Row
├─ ElevatedButton
└─ ElevatedButton
Controls by categories
🗃 Layout
21 items
🗃 Navigation
8 items
🗃 Information Displays
11 items
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
🗃 Buttons
18 items
🗃 Charts
5 items
🗃 Animations
2 items
🗃 Utility
18 items
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Common control properties
Flet controls have the following properties:
adaptive
AlertDialog
AppBar
Checkbox
ListTile
NavigationBar
Radio
Slider
Switch
A control has child controls. In this case adaptive property value is passed on to its
children that don't have their adaptive property set.
Card
Column
Container
Dismissible
ExpansionPanel
FletApp
GestureDetector
GridView
ListView
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Page
Row
SafeArea
Stack
Tabs
View
bottom
Effective inside Stack only. The distance that the child's bottom edge is inset from the
bottom of the stack.
data
disabled
Every control has disabled property which is False by default - control and all its children
are enabled. disabled property is mostly used with data entry controls like TextField ,
Dropdown , Checkbox , buttons. However, disabled could be set to a parent control and its
value will be propagated down to all children recursively.
For example, if you have a form with multiple entry controls you can disable them all together
by disabling container:
c = ft.Column(controls=[
ft.TextField(),
ft.TextField()
])
c.disabled = True
page.add(c)
expand
When a child Control is placed into a Column or a Row you can "expand" it to fill the available
space. expand property could be a boolean value ( True - expand control to fill all available
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
space) or an integer - an "expand factor" specifying how to divide a free space with other
expanded child controls.
For more information and examples about expand property see "Expanding children" sections
in Column or Row .
expand_loose
If expand_loose is True , the child control of a Column or a Row will be given the flexibility
to expand to fill the available space in the main axis (e.g., horizontally for a Row or vertically
for a Column), but will not be required to fill the available space.
import flet as ft
class Message(ft.Container):
def __init__(self, author, body):
super().__init__()
self.content = ft.Column(
controls=[
ft.Text(author, weight=ft.FontWeight.BOLD),
ft.Text(body),
],
)
self.border = ft.border.all(1, ft.colors.BLACK)
self.border_radius = ft.border_radius.all(10)
self.bgcolor = ft.colors.GREEN_200
self.padding = 10
self.expand = True
self.expand_loose = True
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
ft.Row(
alignment=ft.MainAxisAlignment.START,
controls=[
Message(
author="John",
body="Hi, how are you?",
),
],
),
ft.Row(
alignment=ft.MainAxisAlignment.END,
controls=[
Message(
author="Jake",
body="Hi I am good thanks, how about you?",
),
],
),
ft.Row(
alignment=ft.MainAxisAlignment.START,
controls=[
Message(
author="John",
body="Lorem Ipsum is simply dummy text of the pr
),
],
),
ft.Row(
alignment=ft.MainAxisAlignment.END,
controls=[
Message(
author="Jake",
body="Thank you!",
),
],
),
],
)
page.window_width = 393
page.window_height = 600
page.window_always_on_top = False
page.add(chat)
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
ft.app(target=main)
height
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Imposed Control height in virtual pixels.
left
Effective inside Stack only. The distance that the child's left edge is inset from the left of the
stack.
right
Effective inside Stack only. The distance that the child's right edge is inset from the right of
the stack.
top
Effective inside Stack only. The distance that the child's top edge is inset from the top of the
stack.
visible
Every control has visible property which is True by default - control is rendered on the
page. Setting visible to False completely prevents control (and all its children if any) from
rendering on a page canvas. Hidden controls cannot be focused or selected with a keyboard or
mouse and they do not emit any events.
width
Transformations
offset
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
The following example displays container at 0, 0 top left corner of a stack as transform
applies -1 * 100, -1 * 100 ( offset * control_size ) horizontal and vertical
translations to the control:
import flet as ft
page.add(
ft.Stack(
[
ft.Container(
bgcolor="red",
width=100,
height=100,
left=100,
top=100,
offset=ft.transform.Offset(-1, -1),
)
],
width=1000,
height=1000,
)
)
ft.app(target=main)
opacity
Makes a control partially transparent. 0.0 - control is completely transparent, not painted at
all. 1.0 (default) - a control is fully painted without any transparency.
rotate
number - a rotation in clockwise radians. Full circle 360° is math.pi * 2 radians, 90°
is pi / 2 , 45° is pi / 4 , etc.
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
transform.Rotate - allows to specify rotation angle as well as alignment - the
location of rotation center.
For example:
ft.Image(
src="https://picsum.photos/100/100",
width=100,
height=100,
border_radius=5,
rotate=Rotate(angle=0.25 * pi, alignment=ft.alignment.center_left)
)
scale
Scale control along the 2D plane. Default scale factor is 1.0 - control is not scaled. 0.5 - the
control is twice smaller, 2.0 - the control is twice larger.
Different scale multipliers can be specified for x and y axis, but setting Control.scale
property to an instance of transform.Scale class:
class Scale:
scale: float = field(default=None)
scale_x: float = field(default=None)
scale_y: float = field(default=None)
alignment: Alignment = field(default=None)
Either scale or scale_x and scale_y could be specified, but not all of them, for example:
ft.Image(
src="https://picsum.photos/100/100",
width=100,
height=100,
border_radius=5,
scale=Scale(scale_x=2, scale_y=0.5)
)
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Edit this page
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com