用Python在Flet中调用DATATABLE中的数据

dgiusagp  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(171)

你好,我正在用Python在Flet中做一个CRUD,到目前为止,我的CRUD可以很好地使用添加,现在我想从DataTable中删除数据,但使用IconButton,当按下IconButton时,我从DataTable中删除数据,但我得到这样的消息:类型错误:列表索引必须是整数或切片,而不是str

import flet as ft
from flet import *

def main(page: ft.Page):

    codpro = TextField(label="CÓDIGO PRODUCTO")
    nompro = TextField(label="NOMBRE PRODUCTO")

    #combo de categoria
    ddcate = ft.Dropdown(label="CATEGORIA",
        width=150,
        options=[
            ft.dropdown.Option("dulce"),
            ft.dropdown.Option("salado"),
        ],
    )

    #combo de peso
    ddpeso = ft.Dropdown(label="PESO",
        width=100,
        options=[
            ft.dropdown.Option("KG"),
            ft.dropdown.Option("G"),
        ],
    )

    tablaproducto = DataTable(
                  #CABECERA DE LAS CALUMNAS  
                  columns=[
                      DataColumn(Text("CÓDIGO")),
                      DataColumn(Text("PRODUCTO")),
                      DataColumn(Text("CATEGORÍA")),
                      DataColumn(Text("PESO")),
                      DataColumn(Text("ACCIONES")),
                  ],
                  #FILAS  
                  rows=[]          
    )

    #FUNCION ELIMINAR
    def eliminar(e):
        tablaproducto.rows.remove(tablaproducto.rows)

        #MENSAJE con Barra inferior
        page.snack_bar = SnackBar(
            Text("SE ELIMINO DATO", size = 30),
            bgcolor = "red"            
        )
        page.snack_bar.open = True
        #FIN DEL MENSAJE inferior
 
        page.update()

    

    #FUNCION para AGREGAR     
    def agregar(e):
        tablaproducto.rows.append(
            DataRow(
                cells=[
                    DataCell(Text(codpro.value)),
                    DataCell(Text(nompro.value)),
                    DataCell(Text(ddcate.value)),
                    DataCell(Text(ddpeso.value)),
                    DataCell(
                        Row([
                        IconButton("delete", 
                                   icon_color ="red",
                                   on_click = eliminar),
                        ])
                        ),
                ]
            )
        )
        #MENSAJE con Barra inferior
        page.snack_bar = SnackBar(
            Text("DATO INGRESADO CORRECTAMENTE", size = 30),
            bgcolor = "green"
        )
        page.snack_bar.open = True
        #FIN DEL MENSAJE

        page.update()

       
    #Boton AGREGAR
    BtnAgregar = ElevatedButton(
        text="Agregar", 
        bgcolor="blue",
        color="white",
        on_click=agregar
        )
    

    page.add(
        Column([
            Text("PRODUCTOS",size=30,weight="bold"),
            codpro, nompro,ddcate, ddpeso,
            Row([BtnAgregar]),
            tablaproducto
 
            ])
 
        )

ft.app(target=main)

我正在用Python在Flet中做一个CRUD,到目前为止,我的CRUD可以很好地进行添加,现在我想从DataTable中删除数据,但使用IconButton,当按下IconButton时,我从DataTable中删除数据,但我得到这样的消息:类型错误:列表索引必须是整数或切片,而不是str

jhdbpxl9

jhdbpxl91#

我可以用这行代码解决

def eliminar(e):
        tablaproducto.rows.remove(tablaproducto.rows[0])

        #MENSAJE con Barra inferior
        page.snack_bar = SnackBar(
            Text("SE ELIMINO DATO", size = 30),
            bgcolor = "red"            
        )
        page.snack_bar.open = True
        #FIN DEL MENSAJE inferior
 
        page.update()

相关问题