[pyar] PyQt cargar interfaces de forma dinámica

Federico Apelhanz elmaildejapel en gmail.com
Mar Jun 5 14:51:56 ART 2012


si!!!!!!!! me anduvo! jajaja en el main:

import sys
from PyQt4 import QtGui, QtCore

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        from ui_MainWindow import Ui_MainWindow
        self.ventana = Ui_MainWindow()
        self.ventana.setupUi(self)

def main():
    app = QtGui.QApplication(sys.argv) #creamos la app, siempre se hace así.
    global ui
    ui = MainWindow() #creamos la MainWindow, pero todavía no la mostramos
    ui.ventana.setMenusBar(ui)  #creo la barra de menu, y le asigno los
eventos que crean las vistas de forma dinamica
    ui.show()
    sys.exit(app.exec_()) #main loop de la app

y dentro de ui_MainWindow cree:

class ComprobanteDeCompra(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        from ui_ComprobanteDeCompra import Ui_Form
        self.ventana = Ui_Form()
        self.ventana.setupUi(self)

después en el evento trigger del menú llamo a un método:

    def cargarFormularioDeFormaDinamica(self):
        nuevaVista = ComprobanteDeCompra()
        global ui
        ui.setCentralWidget(nuevaVista)


En fin, no se si hay una forma más prolija de hacerlo, pero quedo, por
cierto, re leyéndote, a lo que me referia que no podia pasarle parámetros
era al metodo al que conecto el evento:
anda:
MainWindow.connect(self.action,QtCore.SIGNAL('triggered()'),
self.cargarFormularioDeFormaDinamica)

no anda
MainWindow.connect(self.action,QtCore.SIGNAL('triggered()'),
self.cargarFormularioDeFormaDinamica(MainWindow)))

lo cual es medio choto si quiero tener métodos más genericos para los
eventos, porque me obliga a usar main window como global.



El 5 de junio de 2012 12:23, Roberto Alsina
<ralsina en netmanagers.com.ar>escribió:

> On 06/05/2012 12:15 PM, Federico Apelhanz wrote:
>
>> Bien, la opcion 2 es lo que estoy intentando hacer, (pero evidentemente
>> no me sale) o sea, yo cree la vista con el qdesigner, (seleccione
>> widget), despues lo converti a py y de ahí lo intento cargar:
>>
>> siendo ui mi mainwindow:
>>
>> from ui_VistaRandom import Ui_form
>> nuevaVista = Ui_form()
>> ui.setCentralWidget(**nuevaVista)
>>
>> eso no me anda, o mejor dicho, no se como debería hacerlo.
>>
>
> No tenes que usar los Ui_form directamente. Creá clases que los usen
> en setupUi y después instanciá esas clases.
>
> ______________________________**_________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/**listinfo/pyar<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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120605/e014d71f/attachment.html>


More information about the pyar mailing list