KivyMD 如何使用 on_focus 事件获取焦点文本字段的 id

KivyMD how to get focused textfield's id using on_focus event

我想在用户关注条码文本字段时打开 phone 的摄像头。

但是,on_focus 事件会被触发,即使您将注意力集中在另一个文本字段上也是如此。我必须以某种方式确保聚焦的文本字段是条形码文本字段。我该怎么做?

on_double_tap事件似乎解决了我的问题,但我想一键打开相机。

这是我的相关 .kv 代码:

GridLayout:
    rows: 4
    cols: 1
    row_default_height: 40
    padding: [10,70,10,10]
    spacing: 0

    MDTextField:
        id: txt_barcode_3
        hint_text: "Barkod"
        on_focus: root.barcode_camera_insert()
        
    MDTextField:
        id: txt_reference_3
        hint_text: "Referans"
        
    MDTextField:
        id: txt_productname_3
        hint_text: "Ürün Adı"
        
    MDRectangleFlatButton
        id: btn_save_3
        text: "Kaydet"
        font_size: "20sp"
        size_hint: 1,0  
        on_press: root.add_barcode()

只要 focus 发生变化,就会触发 on_focus 事件,即使它从 True 变为 False。所以你的 root.barcode_camera_insert() 在任何一种情况下都会被调用。我还没有测试过这个,但试试看:

on_focus: root.barcode_camera_insert() if self.focus else None