[pyar] Actualizar QListWidget luego de cerrar QDialog.

Gabriel Acosta acostadariogabriel en gmail.com
Vie Jul 31 20:08:02 ART 2015


Hacé como dijo Martín, que el hijo emita una señal:

class QDialogPadre(QDialog):
    def __init__(self, parent):
        QDialog.__init__(self, parent)
        self.ListWidgetReceptores = QListWidget()
        self.dialog_hijo = QDialogHijo()

        self.connect(self.dialog_hijo, SIGNAL("signalHijo()"),
                             self._hacer_algo)

    def _hacer_algo(self):
        # Acá podes trabajar con el ListWidget

class QDialogHijo(QDialog):
     def __init__(self, parent):
         QDialog.__init__(self, parent)

      def foo(self):
           self.emit("signalHijo()"))

o tambíen:

class QDialogHijo(QDialog):
     def __init__(self, parent):
          QDialog.__init__(self, parent)
          self.padre = parent
          # Acá la referencia a listwidget
          self.padre.ListWidgetReceptores.addItem("lalal")

para éste último caso tendrias que pasarle la instancia del padre
cuando creas el hijo:
self.dialog_hijo = QDialogHijo(self)

Saludos!
El 31/7/15, Enrique Alejandro Villafañe <villafane.enrique en gmail.com> escribió:
> Y como accedo a los objetos (Widgets) del QDialogPadre desde el
> QDialogHijo?
>
> Yo los inicializo asi
>
> class QDialogPadre(QDialog):
>     def __init__(self, parent):
>         QDialog.__init__(self, parent)
> #Aqui creo el QListWidget
>         self.ListWidgetReceptores = QListWidget(self)
>         self.ListWidgetReceptores.setGeometry(20,35,260,400)
>         self.ListWidgetReceptores.show()
>
> class QDialogHijo(QDialog):
>     def __init__(self, parent):
>         QDialog.__init__(self, parent)
>
> #Como le envio una senal al widget del padre desde aqui? porque con
> self.ListWidgetReceptores no me deja acceder desde el hijo. Agradezco mucho
> su ayuda.
>
> El 31 de julio de 2015, 18:03, Gabriel Acosta
> <acostadariogabriel en gmail.com>
> escribió:
>
>> Al botón lo podes conectar a más de un slot:
>>
>> boton.clicked.connect(self._agregar_a_db)
>> boton.clicked.connect(self._actualizar_listwidget)
>>
>> Saludos!
>>
>> Gabriel Acosta
>> http://centaurialpha.github.io
>> On Jul 31, 2015 7:27 PM, "Enrique Alejandro Villafañe" <
>> villafane.enrique en gmail.com> wrote:
>>
>>> Gracias por la respuesta. No soy muy experto y aparte estoy trabajando
>>> con pyqt4.
>>>
>>> Cuando yo muestro el QDialog donde tngo el QListWidget en su init yo
>>> busco en una base de datos el nombre de cada item y lo agrego a la
>>> lista.
>>> En el caso del QDialog hijo, es para agregar uno nuevo, y yo al darle al
>>> boton aceptar en ese QDialog hijo inserto en la base de datos un nuevo
>>> item. hasta ahi todo perfecto, ahora, lo que no se y no se si asi debe
>>> ser
>>> o si lo estoy pensando mal, es como conectar tambien ese boton de
>>> aceptar
>>> que esta en el segundo QDialog, aparte de para agregar a la Base de
>>> Datos
>>> el item, para que el QListWidget que esta en el QDialog padre, vuelva a
>>> llamar a su funcion de pintar nuevamente los items.
>>>
>>> El 31 de julio de 2015, 16:45, Martin Alderete <malderete en gmail.com>
>>> escribió:
>>>
>>>> Buenas!
>>>> Como va?
>>>>
>>>> Se me ocurre que podrias emitir una signal onda "Hey acabo de agregar
>>>> un
>>>> item" (con sus datos) y el widget que necesita saber de eso se conecte
>>>> a
>>>> esa signal [1]
>>>>
>>>> El que emite la signal haria algo como:
>>>> self.emit(SIGNAL("item_saved(PyQt_PyObject)", item_data)
>>>>
>>>> item_data seria algun objeto con los datos que queres pasar al que se
>>>> contecte a la signal
>>>>
>>>> EL que se conecta a la signal haria algo como:
>>>>
>>>> self.connect(self._emisor, SIGNAL("item_saved(PyQt_PyObject)",
>>>> self._update_view)
>>>> es decir cuando  "self._emisor" emita la signal
>>>> "item_saved(PyQt_PyObject)" se ejecuta "self._update_view"
>>>>
>>>> def _update_view(self, item_data):
>>>>     # aca podes manipular item_data
>>>>     # actualizas el QlistWidget, etc
>>>>
>>>>
>>>> [1] http://doc.qt.io/qt-5/signalsandslots.html
>>>>
>>>> Espero se entienda y sirva,
>>>>
>>>> saludos!
>>>>
>>>>
>>>>
>>>> 2015-07-31 17:48 GMT-03:00 Enrique Alejandro Villafañe <
>>>> villafane.enrique en gmail.com>:
>>>>
>>>>> El asunto es el siguiente, tengo una ventana QDialog, hija de otra
>>>>> QDialog donde tengo un QlistWidget. Necesito que al agregar un nuevo
>>>>> item a
>>>>> la base de datos que lo hago con la segunda ventana, se me actualice
>>>>> la
>>>>> lista de el primer QDialog! Alguien tiene idea como hacerlo? Gracias
>>>>>
>>>>> --
>>>>> Enrique A Villafañe
>>>>>
>>>>> *Telefonos de Contacto*
>>>>>
>>>>> Celular : +58 412 5151603
>>>>> Oficina: +58 273 5325224 - +58 273 5321592 - +58 273 5325527
>>>>>
>>>>> _______________________________________________
>>>>> pyar mailing list pyar en python.org.ar
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Alderete
>>>>
>>>> _______________________________________________
>>>> pyar mailing list pyar en python.org.ar
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>>
>>> --
>>> Enrique A Villafañe
>>>
>>> *Telefonos de Contacto*
>>>
>>> Celular : +58 412 5151603
>>> Oficina: +58 273 5325224 - +58 273 5321592 - +58 273 5325527
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
>
> --
> Enrique A Villafañe
>
> *Telefonos de Contacto*
>
> Celular : +58 412 5151603
> Oficina: +58 273 5325224 - +58 273 5321592 - +58 273 5325527
>


-- 
Gabo


More information about the pyar mailing list