You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KivyMD动态好友列表中获取点击项的好友名称?

问题解决:获取好友列表项的名称并传递到对话框

你的核心问题是点击邮件图标时,无法正确获取对应列表项的好友名称——当前代码传递的是按钮自身的text属性(未设置,所以为空),而非MDListItemHeadlineText里的好友名称。以下是两种直接可行的解决方案:


方案1:直接绑定好友名称(最简洁)

在循环创建列表项时,利用lambda的默认参数绑定当前循环的好友名称,避免循环变量引用问题:

修改FriendsList类的on_enter方法中按钮的创建代码:

TrailingPressedIconButton(
    icon="email",
    # 用默认参数绑定当前row的好友名称,确保每个按钮对应正确的名称
    on_release=lambda x, friend_name=row[0]: self.message_dialog_open(friend_name)
)

这样点击按钮时,会直接把对应的好友名称传递给message_dialog_open方法,无需额外查找控件。


方案2:通过控件层级获取名称

如果不想直接传递名称,可以通过按钮的父控件MDListItem,遍历子控件找到MDListItemHeadlineText并获取文本:

第一步:修改按钮的点击事件传递按钮实例

TrailingPressedIconButton(
    icon="email",
    on_release=lambda x: self.message_dialog_open(x)
)

第二步:修改message_dialog_open方法获取名称

def message_dialog_open(self, button):
    # 获取按钮所在的MDListItem父控件
    list_item = button.parent
    # 遍历子控件找到MDListItemHeadlineText
    friend_name = "Unknown"
    for child in list_item.children:
        if isinstance(child, MDListItemHeadlineText):
            friend_name = child.text
            break

    self.message_input_field = MDTextField(mode="filled", height="100dp", multiline=True)

    self.message_dialog = MDDialog(
        MDDialogHeadlineText(text=f'Message {friend_name}'),
        MDDialogContentContainer(self.message_input_field),
        MDDialogButtonContainer(
            Widget(),
            MDButton(
                MDButtonText(text="Cancel"),
                style="text",
                on_release=lambda *args: self.message_dialog.dismiss()
            ),
            MDButton(
                MDButtonText(text="Send"),
                style="text",
                on_release=lambda *args: self.message_send_button_click()
            ),
            spacing="8dp",
        ),
    )
    self.message_dialog.open()

额外修正:修复Test类的继承错误

你的Test类同时继承MDApp和MDScreen是错误的,App类只需继承MDApp:

class Test(MDApp):
    def build(self):
        return Builder.load_string(KV)

内容的提问来源于stack exchange,提问作者Максим Игрок

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 14:20:08