Получить текст из динамического списка в KivyMD

У меня есть код, реализующий список друзей. Когда вы щелкнете значок сообщения, появится всплывающее окно с заголовком того, кому оно отправлено. Мне нужно получить имя друга из MDListItemHeadlineText, где пользователь щелкает этот значок. Мой kv-код здесь:

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.uix.widget import Widget
from kivymd.app import MDApp
from kivymd.uix.button import MDButton, MDButtonText
from kivymd.uix.dialog import MDDialog, MDDialogHeadlineText, MDDialogButtonContainer, MDDialogContentContainer
from kivymd.uix.screen import MDScreen
from kivymd.uix.textfield import MDTextField
from kivymd.uix.list import (MDListItem, MDListItemHeadlineText, MDListItemSupportingText,
                             MDListItemTertiaryText, MDListItemTrailingIcon)
from kivymd.uix.behaviors import RotateBehavior
from kivy.uix.behaviors import ButtonBehavior

KV = '''
ScreenManager:
    Main:
    FriendsList:
        id: friends_list
        name: 'friends_list'

<Main>
    BoxLayout:
        orientation: 'vertical'
        spacing: 10
        Button:
            text: 'Friends'
            on_press: root.list_click()                
    
    
<FriendsList>
    BoxLayout:
        orientation: 'vertical'
        spacing: 10
        canvas:
            Color:
                rgba: 255/255, 255/255, 255/255, 1
            Rectangle:
                source: "./Images/main_background.jpg"
                size: self.size
                pos: self.pos
        MDScrollView:
            id:scroll
    
            MDList:
                id: lists
'''

и мой образец py-файла:

class TrailingPressedIconButton(ButtonBehavior, RotateBehavior, MDListItemTrailingIcon):
    ...


class FriendsList(Screen):

    def on_enter(self):
        file_reader = [['name_1', 'text_1', 'text_text_1'],
                       ['name_2', 'text_2', 'text_text_2'],
                       ['name_3', 'text_3', 'text_text_3']]
        for row in file_reader:
            self.ids.lists.add_widget(MDListItem(
                MDListItemHeadlineText(text=row[0], theme_text_color='Custom', text_color='black'),
                MDListItemSupportingText(text=row[1], theme_text_color='Custom', text_color='grey'),
                MDListItemTertiaryText(text=row[2], theme_text_color='Custom', text_color='black'),
                TrailingPressedIconButton(icon = "email", on_release=lambda x: self.message_dialog_open(x.text))
            )
            )

    def message_dialog_open(self, friend_name):
        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()


class Main(Screen):

    def list_click(self):
        self.manager.current = 'friends_list'
        self.manager.transition.direction = 'left'


class Test(MDApp, MDScreen):

    def build(self):
        return Builder.load_string(KV)

Версия Киви: 2.0.1dev0

Питон: 3.10

Я попытался обернуть MDListItemHeadlineText как объект, но это тоже не сработало.

Буду рад получить каждый ответ и помощь в этом

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте изменить строку:

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

к:

TrailingPressedIconButton(icon = "email", on_release=lambda button, friend=row[0]: self.message_dialog_open(button, friend))

Имя друга будет передано в ваш метод message_dialog_open(). Это требует небольшого изменения в этом методе:

def message_dialog_open(self, friend_name):

к:

def message_dialog_open(self, button, friend_name):

Теперь ваш метод message_dialog_open() получит имя друга.

Другие вопросы по теме

Похожие вопросы

Как правильно реализовать логику привязки к сетке для QGraphicsItem? Мой не работает
При использовании pandas для чтения файла Excel любые ячейки, использующие поиск в другой таблице, читаются как NaN, есть ли обходной путь?
Почему в Visual Studio Code v1.88.0 и расширении Python v2024.4.0 вокруг моей виртуальной среды Python заключены двойные круглые скобки?
Нужна помощь в сопоставлении строки с использованием регулярного выражения до последнего появления открывающей-закрывающей скобки с необязательным значением в открывающей-закрывающей скобке
Постройте график для каждой подгруппы группы
Проблема в Django 5.0.2 и django_rest_framework
Python3 извлекает различные подмножества из списка/массива в одну новую переменную
Как я могу открыть несколько файлов с помощью tkinter OpenFileDialog?
Ошибка установки dlib в Python на Ubuntu
Как проанализировать текстовый файл с заголовками, состоящими из нескольких строк в Python