手势检测器 GestureDetector
一个用于检测手势的控件。
尝试识别与其非空回调相对应的手势。
如果该控件有一个content
,它将以该子控件为参考来确定自己的尺寸行为。如果没有content
,则它会根据父控件的尺寸自动调整大小。
示例
可拖动容器
以下示例演示了如何在 Stack 内自由拖动一个控件。
该示例还展示了 GestureDetector 可以拥有一个子控件(蓝色容器),也可以嵌套在另一个控件内(黄色容器),得到相同的结果。
- Python
import flet as ft
def main(page: ft.Page):
def on_pan_update1(e: ft.DragUpdateEvent):
c.top = max(0, c.top + e.delta_y)
c.left = max(0, c.left + e.delta_x)
c.update()
def on_pan_update2(e: ft.DragUpdateEvent):
e.control.top = max(0, e.control.top + e.delta_y)
e.control.left = max(0, e.control.left + e.delta_x)
e.control.update()
gd = ft.GestureDetector(
mouse_cursor=ft.MouseCursor.MOVE,
drag_interval=50,
on_pan_update=on_pan_update1,
)
c = ft.Container(gd, bgcolor=ft.colors.AMBER, width=50, height=50, left=0, top=0)
gd1 = ft.GestureDetector(
mouse_cursor=ft.MouseCursor.MOVE,
drag_interval=10,
on_vertical_drag_update=on_pan_update2,
left=100,
top=100,
content=ft.Container(bgcolor=ft.colors.BLUE, width=50, height=50),
)
page.add( ft.Stack([c, gd1], width=1000, height=500))
ft.app(target=main)
属性
content
手势检测器包含的子控件。
mouse_cursor
鼠标指针悬停在控件上时的样式。可能的MouseCursor
枚举值有:
ALIAS
ALL_SCROLL
BASIC
CELL
CLICK
CONTEXT_MENU
COPY
DISAPPEARING
FORBIDDEN
GRAB
GRABBING
HELP
MOVE
NO_DROP
NONE
PRECISE
PROGRESS
RESIZE_COLUMN
RESIZE_DOWN
RESIZE_DOWN_LEFT
RESIZE_DOWN_RIGHT
RESIZE_LEFT
RESIZE_LEFT_RIGHT
RESIZE_RIGHT
RESIZE_ROW
RESIZE_UP
RESIZE_UP_DOWN
RESIZE_UP_LEFT
RESIZE_UP_LEFT_DOWN_RIGHT
RESIZE_UP_RIGHT
RESIZE_UP_RIGHT_DOWN_LEFT
TEXT
VERTICAL_TEXT
WAIT
ZOOM_IN
ZOOM_OUT