[pyar] duda de pyqt4, abriendo nuevas ventanas

Roberto Alsina ralsina en netmanagers.com.ar
Lun Nov 29 09:48:46 ART 2010


On Monday 29 November 2010 09:39:43 Matias Graña wrote:
> 2010/11/29 Roberto Alsina <ralsina en netmanagers.com.ar>:
> > On Monday 29 November 2010 01:51:16 Matias Graña wrote:
> >> class Foo(QtGui.QMainWindow):
> >>     def __init__(self, parent=None):
> >>         QtGui.QWidget.__init__(self, parent)
> > 
> > Foo hereda QMainWindow pero estás inicializando con QWidget. Mala idea.
> > 
> >>         self.mw = Ui_MainWindow()
> >>         self.mw.setupUi(self)
> > 
> > No tengo idea de porqué hacés esas dos líneas en vez de
> > self.setObjectName("MainWindow")
> 
> Casi seguro, lo hago por error. Estoy usando qt-designer, que genera
> un bar.ui, que yo traduzco a bar.py con pyuic4. No quiero tocar
> bar.py, porque va a chocar con un uso posterior de qt-designer.
> Entonces importo el bar.py desde mi main.py. La clase Ui_MainWindow
> está definida en bar.py; yo tomé de ahí lo mínimo indispensable para
> que entrara en mi ejemplito, y limpié todo el código innecesario.
> Hay alguna manera más limpia para hacer esto?

No, eso está bien, es que en este caso es innecesario porque no tenés un .ui 
:-)

Te recomiendo cargar dinámicamente el .ui, es más fácil no tener que acordarse 
de recompilarlo y cambiás dos líneas de código nomás.

> >>     def abrir_pagina(self):
> >>         web = QtWebKit.QWebView()
> >>         web.load(QtCore.QUrl('http://google.com.ar'))
> >>         web.show()
> > 
> > No estás guardando una referencia a web en ningún lado. Terminás la
> > función y el garbage collector se la lleva y desaparece antes de que
> > entres de vuelta en el event loop (que es cuando show() tendría efecto).
> > Así que cambio web por self.web.
> 
> Con esto funciona tal cual quiero. Muchísimas gracias! Y también
> muchísimas gracias por la explicación. Ahora me entra la duda: con la
> excepción funcionaba porque volvía al main loop antes de que el GC
> molestara? O porque el Traceback se guardaba una referencia a web y
> entonces el GC no se la llevaba?

Ni idea. Tendría que ver el caso que me estás diciendo.



More information about the pyar mailing list