Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Error al capturar el valor de una celda en QTableWidget
#1
Hola a todos:

Estoy aprendiendo este lenguaje y soy nuevo en el foro.

Tengo un codigo que incluye un QTableWidget de varias columnas y necesito mostrar una informacion en una caja de texto  cada vez que se desplaza el cursor  con el evento itemSelectionChanged de esta tabla.

El codigo es el siguiente:

TabledeSintomas -> tabla que se esta usando
showRemedios -> evento que se desencadena al mover el cursor

self.TabledeSintomas.itemSelectionChanged.connect(lambda : self.showRemedios( ))


def showRemedios(self):
        """ 
        MUESTRA LOS REMEDIOS DEL SINTOMA DONDE ESTA EL CURSOR
        """
        
        #col 4 es la columna de remedios que se va a mostrar
        

        currow = self.TabledeSintomas.currentRow()
        xcelda = self.TabledeSintomas.item(currow , 4)
        xremedios = xcelda.text()
        print (xremedios)

La primera que se ejecuta corre bien pero cuando se cambia el contenido de la tabla me genera el error

File "C:\projects\Trivium7\Trivium7spyder\LlamasintomasTriv.py", line 105, in showRemedios
  xremedios = xcelda.text()

builtins.AttributeError: 'NoneType' object has no attribute 'text'
        
Quisiera saber que error estoy cometiendo o si hay otra forma de actualizar esta variable capturando el valor de la celda.

Gracias por su ayuda.
Responder
#2
Hola, bienvenido!

El problema probablemente sea que cuando el contenido de la tabla se actualiza la selección se borra. Si la selección se borra tu variable xcelda va a ser None, porque no hay ninguna celda seleccionada. Lo único que deberías hacer es agregar la siguiente comprobación para que la función termine en estos casos:

Código:
xcelda = self.TabledeSintomas.item(currow , 4)
if xcelda is None:
    return

Por cierto, respecto de este código:

Código:
self.TabledeSintomas.itemSelectionChanged.connect(lambda : self.showRemedios( ))

Crear una función lambda no es necesario, simplemente puedes dejarlo así:

Código:
self.TabledeSintomas.itemSelectionChanged.connect(self.showRemedios)

Saludos!
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)