Question

Utilisation de Pyqt4 4.8.6 Le code ci-dessous produit l'erreur

QObject :: Starttimer: Qtimer ne peut être utilisé qu'avec des threads démarrés avec QThread

Lorsque A est utilisé comme variable pour Qapplication, mais il ne produit pas l'erreur si CPP (ou la plupart des autres) est utilisé pour la variable. Est-ce un bug dans PYQT4 ou y a-t-il quelque chose qui me manque?

#! /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()
Était-ce utile?

La solution

Ce n'est probablement pas un bug, en tant que tel.

Lorsque le Python commence à s'arrêter, l'ordre dans lequel les objets sont collectés aux ordures peuvent être imprévisibles. Le message d'erreur que vous voyez en est probablement un effet secondaire.

Cela cause-t-il un vrai problème dans votre application?

Sinon, renommez simplement le cas échéant et oubliez-le ...

Autres conseils

Vous devez définir la vue sur la suppression lorsqu'elle est fermée. Cela implique simplement d'ajouter les deux lignes suivantes à votre application:

from PyQt4.QtCore import Qt

Et puis après l'instanciation de la table de table:

tableView.setAttribute(Qt.WA_DeleteOnClose)

Lorsque j'ajoute ces lignes à votre code, je n'obtiens pas l'erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top