[pyar] duda de pyqt4, abriendo nuevas ventanas
Roberto Alsina
ralsina en netmanagers.com.ar
Lun Nov 29 06:18:56 ART 2010
On Monday 29 November 2010 01:51:16 Matias Graña wrote:
> Estoy intentando hacer una mini aplicación con PyQt4. Tengo un
> problema al abrir una nueva ventana. A los bifes; el código es:
>
> ------------------------------
> from PyQt4 import QtCore, QtGui, QtWebKit
>
> 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")
>
> def keyPressEvent(self, event):
> key = event.key()
> if key == QtCore.Qt.Key_O:
> self.abrir_pagina()
>
> 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.
En resumen:
from PyQt4 import QtCore, QtGui, QtWebKit
class Foo(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setObjectName("MainWindow")
def keyPressEvent(self, event):
key = event.key()
if key == QtCore.Qt.Key_O:
self.abrir_pagina()
def abrir_pagina(self):
self.web = QtWebKit.QWebView()
self.web.load(QtCore.QUrl('http://google.com.ar'))
self.web.show()
if __name__ == '__main__':
app = QtGui.QApplication([])
foo = Foo()
foo.show()
app.exec_()
More information about the pyar
mailing list