Передача в on_select_changed функцию flet

Рейтинг: 0Ответов: 2Опубликовано: 08.08.2023

Прошу помочь в решении проблемы. Мне нужно передать, к примеру, в on_select_changed объекта DataRow функцию с переменными, т.е. мне нужно получить состояние через handler и присвоить его переменной.

Имеется DataTable:

self.t = ft.DataTable( 
                columns=[
                    ft.DataColumn(ft.Text("")),
                    ft.DataColumn(ft.Text("Поле 1")),
                    ft.DataColumn(ft.Text("Поле 2")),
                    ft.DataColumn(ft.Text("Поле 3"))
                    
                                                    
                ],expand=1, 
                
            )
        for i in range(len(tablearr)):
            
            self.t.rows = self.t.rows + [
                    ft.DataRow(
                        cells=[
                            ft.DataCell(ft.Checkbox()),
                            ft.DataCell(ft.Text(tablearr[i][0])),
                            ft.DataCell(ft.Text(tablearr[i][4])),
                            ft.DataCell(ft.Text(tablearr[i][1]))                            
                            
                        ],on_select_changed=func1(self.arr)
                    ),]

При возникновении события on_select_changed должна срабатывать функция func1:

def func1(self,spl)
    self.control.cells[0].content.value = True
    spl = spl + str(self.control.cells[1].content.value)
    page.update()

Я так понимаю, что в функцию, кроме заполняемой переменной, нужно передать handler. Как его передать?

Ответы

▲ 0Принят

Проблема решается очень просто. Создал статическую переменную и присваиваю ей значение в функции func1

▲ 0

Добавь к DataRow параметр data=self.arr:

 self.t.rows = self.t.rows + [
  ft.DataRow(
   cells=[
    ft.DataCell(ft.Checkbox()),
    ft.DataCell(ft.Text(tablearr[i][0])),
    ft.DataCell(ft.Text(tablearr[i][4])),
    ft.DataCell(ft.Text(tablearr[i][1]))                            
   ],on_select_changed=func1, data=self.arr
 ),].

Чтобы получить data в функции, воспользуйся self.control.data.