如何在Python Flet模块中点击TextButton获取自定义data属性?
在Flet 0.1.62版本中,TextButton的点击事件参数e.data不会自动携带自定义的data属性,这是和ElevatedButton的实现差异导致的。你可以通过以下两种方法实现需求:
方法1:通过lambda传递自定义数据
创建TextButton时,用lambda函数将自定义数据直接传给点击处理函数:
import flet as ft def main(page: ft.Page): def btn_clicked(e, custom_data): print(f"获取到的自定义数据:{custom_data}") page.add( ft.TextButton("按钮A", on_click=lambda e: btn_clicked(e, "data_A")), ft.TextButton("按钮B", on_click=lambda e: btn_clicked(e, "data_B")) ) ft.app(target=main)
方法2:访问按钮实例的data属性
给TextButton设置data属性后,在处理函数中通过e.control.data直接获取(e.control就是触发事件的按钮本身):
import flet as ft def main(page: ft.Page): def btn_clicked(e): print(f"获取到的自定义数据:{e.control.data}") page.add( ft.TextButton("按钮X", data="data_X", on_click=btn_clicked), ft.TextButton("按钮Y", data="data_Y", on_click=btn_clicked) ) ft.app(target=main)
第二种方法更贴近你参考的计算器示例逻辑,推荐使用。
内容的提问来源于stack exchange,提问作者Javid
相关产品推荐
相关产品推荐

