“Debe construir una aplicación de Q antes de un QPaintDevice” de QWidget

Estoy ocupado portando un cliente IRC de Python 2.6 a 3.3 y me he topado con un problema con PyQt. La aplicación originalmente usaba PyQt4, también la estoy recodificando para que funcione con PyQt5, pero recibo un error sin ninguna referencia de línea: “QWidget: debe construir una aplicación de Q antes de un QPaintDevice”. He reducido el tema a una sola clase.

Entiendo que ya se lo han pedido aquí muchas veces, pero no pude obtener una respuesta segura para mi caso, así que me disculpo si mi pregunta parece ignorante.

Aquí hay algunos de los códigos: http://pastebin.com/Lj60icgQ

Stupid me no puso la variable “app” justo después de las instrucciones de importación cuando debería haberlo hecho. Luego puse el rest del código en la parte inferior del archivo principal y ya no recibo ese error. ¡Gracias por la ayuda!

Me temo que un solo archivo no será suficiente en esta situación, el flujo de ejecución no está claro solo en este módulo. El mensaje en cuestión generalmente aparece cuando intenta usar algunos recursos / crear algunos objetos que requieren una aplicación de Q inicializada, como QIcon, por ejemplo.

La creación de instancias de la aplicación GUI basada en Qt generalmente se ve así:

if __name__ == "__main__": app = QtGui.QApplication(sys.argv) main_window = MainWindowClass() main_window.show() sys.exit(app.exec_()) 

El mensaje de error es bastante claro: está intentando dibujar un QWidget (que en PyQt4.5 hereda QPaintDevice y QObject ) antes de crear una instancia de QApplication . Pero su código es demasiado grande para leerlo línea por línea. Intente aislar el error creando una pequeña aplicación y agregando funcionalidad paso a paso. O use un depurador (se supone que los IDE como Eclipse + PyDev pueden depurar su aplicación). O proporcione un ejemplo pequeño y autónomo del problema.