2012-01-24 10 views
6

Usando PyQt4 4.8.6 el código de abajo produce el errorPyQt4 Resultados en error QThread

QObject :: startTimer: QTimer sólo se puede utilizar con hilos comenzó con QThread

cuando una se utiliza como la variable para QAplicación, pero no produce el error si cpp (o casi cualquier otra cosa) se usa para la variable. ¿Es esto un error en PyQt4 o hay algo que me falta?

#! /usr/bin/env python 

# This is only needed for Python v2 but is harmless for Python v3. 
import sip 
sip.setapi('QVariant', 2) 

from PyQt4 import QtGui 

#def main(): 

if __name__ == '__main__': 
    import sys 

    if len(sys.argv) > 1: 
     use_a = False 
     print "Don't use a" 
    else: 
     use_a = True 
     print "Use a" 

    if use_a: 
     a = QtGui.QApplication(sys.argv) 
    else: 
     cpp = QtGui.QApplication(sys.argv) 

    model = QtGui.QStandardItemModel(4,2) 
    tableView = QtGui.QTableView() 
    tableView.setModel(model) 

    tableView.show() 
    if use_a: 
     sys.exit(a.exec_()) 
    else: 
     sys.exit(cpp.exec_()) 


#if __name__ == '__main__': 
# main() 

Respuesta

6

Probablemente no es un error, como tal.

Cuando Python comienza a cerrarse, el orden en que los objetos se recogen de basura puede ser impredecible. El mensaje de error que está viendo probablemente sea un efecto secundario de eso.

¿Esto está causando un problema grave en su aplicación?

Si no, simplemente cambiar el nombre según sea apropiado y olvidarse de él ...

+0

No es un problema, pero quería entender qué está pasando. – MES

+0

Tengo el mismo problema, ¿es posible eliminar esos mensajes de error de la consola? –

+0

¿Es posible eliminar manualmente el hilo para evitar estos mensajes de error? –

0

Es necesario configurar el fin de eliminar cuando está cerrado. Esto sólo implica la adición de las dos líneas siguientes a su aplicación:

from PyQt4.QtCore import Qt 

y luego después de la tableView se instancia:

tableView.setAttribute(Qt.WA_DeleteOnClose) 

Cuando agrego esas líneas a su código que no reciben el error.

Cuestiones relacionadas