[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