[pyar] QtTableWidget + focusOutEvent (Fernando Gonzalez)

Cristhian Martin cristhian en linuxar.com
Sab Oct 26 09:15:20 -03 2019


Fernando, buenos días, por si te interesa te envío como resolví el tema del foco 
en los QTableWidget

Defino un eventFilter en la clase que hereda de la ventana y tiene programada 
toda la lógica de esta forma

def eventFilter(self, QObject, QEvent):   if isinstance(QObject, QtGui.QTableWidget):      
if QEvent.type() == QEvent.FocusOut:         print('Salgo de la grilla')      elif 
QEvent.type() == QEvent.FocusIn:         print('Entro a la grilla')   return 
super(cod_libro_iva, self).eventFilter(QObject, QEvent)



y luego la instalo en el __init__ de la siguiente forma

self.ui.tableWidget.installEventFilter(self)



De esta forma el código queda todo en el mismo lugar y no necesito modificar el 
.py que me genera el pyuic4.

Espero te sea de ayuda y gracias nuevamente por tu colaboracion.

Saludos Cordiales

Cristhian Martin



El Vie 25 Oct 2019 10:54:50 pyar-request en python.org.ar escribió:
> Envíe los mensajes para la lista pyar a
> 	pyar en python.org.ar
> 
> Para subscribirse o anular su subscripción a través de la WEB
> 	http://listas.python.org.ar/listinfo/pyar
> 
> O por correo electrónico, enviando un mensaje con el texto "help" en
> el asunto (subject) o en el cuerpo a:
> 	pyar-request en python.org.ar
> 
> Puede contactar con el responsable de la lista escribiendo a:
> 	pyar-owner en python.org.ar
> 
> Si responde a algún contenido de este mensaje, por favor, edite la
> linea del asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of pyar digest...". Además, por favor, incluya en la
> respuesta sólo aquellas partes del mensaje a las que está
> respondiendo.
> 
> 
> Asuntos del día:
> 
>    1. Re: QtTableWidget + focusOutEvent (Fernando Gonzalez)
>    2. Puzzler de Python (Agustin Barto)
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Thu, 24 Oct 2019 15:55:35 -0300
> From: Fernando Gonzalez <fagonzalez en gmail.com>
> To: Python Argentina <pyar en python.org.ar>
> Subject: Re: [pyar] QtTableWidget + focusOutEvent
> Message-ID:
> 	<CACPukSWaoXL4Tx+B=-U-
SGdK285hNeY+9CD+2VffHSw79kpeAg en mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
> 
> Hola cuando necesite capturar un evento (returnPressed) del
> QTableWidget, tuve que crear una clase nueva basada en QTableWidget,
> tal como vos hiciste, pero la única manera que me funciono, fue cuando
> edito el .py que genera en pyuic4, agrego en la seccion import la
> nueva clase, y en el fuente reemplazo
> 
>           .
>           .
>           self.tbwdetalle = QTableWidget(...... por    self.tbwdetalle
> = CellReturnPress(... (asi nombre la nueva clase, original no?)
> 
> y probe de todas las formas que se me ocurrio, ya se que no hay que
> ovidarse de editar el .py, a veces me olvido y me puteo a mi mismo
> 
> un abrazo
> 
> Fer
> 
> El jue., 24 oct. 2019 a las 12:04, Cristhian Martin
> 
> (<cristhian en linuxar.com>) escribió:
> > Buenos días, estoy intentando capturar el evento focusOut de un
> > QTableWidget, la verdad es que nunca trabaje con eventos en un widget en
> > particular salvo el MainWindow, lo estoy tratando de hacer por lo que
> > pude encontrar googleando con una implementación de una subclase pero no
> > estoy logrando resultado alguno, si alguien lo utilizo y me puede dar una
> > mano se lo agradezco.
> > 
> > La implementacion de la clase la tengo hecha de la siguiente manera
> > 
> > class MyTableWidget(QtGui.QTableWidget):
> >    def __init__(self):
> >       super(MyTableWidget, self).__init__()
> >    
> >    def focusOutEvent(self, QFocusEvent):
> >       print('NNNNNNNNNNNNNNNN')
> >       return QtGui.QTableWidget.focusOutEvent()
> > 
> > y la llamo de la siguiente forma, cuando cargo el form
> > 
> > def __init__(self, permisos, usuario_log):
> >    super(cod_libro_iva, self).__init__()
> >    self.ui = Ui_Form()
> >    self.ui.setupUi(self)
> >    self.ui.tableWidget = MyTableWidget()
> > 
> > La verdad es que hasta aquí llegue haciendo distintas pruebas y se me
> > están
> > quemando los papeles.
> > 
> > Agradezco cualquier sugerencia.
> > 
> > Saludos Cordiales
> > _______________________________________________
> > Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> > Sitio web: http://www.python.org.ar/
> > 
> > Para administrar la lista (o desuscribirse) entrar a
> > http://listas.python.org.ar/listinfo/pyar
> > 
> > La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> > Argentina - http://www.usla.org.ar
> ------------------------------
> 
> Message: 2
> Date: Fri, 25 Oct 2019 10:56:41 -0300
> From: Agustin Barto <abarto en gmail.com>
> To: Python Argentina <pyar en python.org.ar>
> Subject: [pyar] Puzzler de Python
> Message-ID:
> 	
<CADya715WEms85iC9T+WStC_kLXvNqtNKQn3fjnVR8_qp7EqYuA en mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
> 
> Estimadxs:
> 
> Mientras estaba tratando de resolver un problema en el trabajo me encontré
> con una salida que no esperaba. Investigando la raiz del problema, me
> encontré con una curiosidad que destilé en el siguiente ejemplo.
> 
> La salida muestra la proyección de la lista de diccionarios sobre el campo
> "b" en lugar de "a". La solución es cambiar los generadores por listas en
> la definición de "t", pero no me queda muy claro porque funciona mal con
> generadores.
> 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20191026/92811d69/attachment-0001.html>


Más información sobre la lista de distribución pyar