When (and only when) I quit my application, these (and only these) repeated message appear on the command prompt:
QObject::startTimer: QTimer can only be used wi
In my experience this happens when I subclass a Qt class and one of the members of the subclass is not part of the Qt hierarchy. For example:
class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) ... self.my_widget = MyWidget() ...
If I implement
MyWidget in this way, it will give me the
QTimer error when the object is destroyed:
class MyWidget(object): def __init__(self): # do stuff
MyWidget inherits from
QObject then no error occurs:
class MyWidget(QObject): def __init__(self, parent): super(MyWidget, self).__init__(parent) #do stuff
I've had similar problems in the past.
QFileSystemModeldocumentation page says the following:
QFileSystemModel.__init__ (self, QObject parent = None)
The parent argument, if not None, causes self to be owned by Qt instead of PyQt.
Constructs a file system model with the given parent.
If you don't pass a
parent argument then the Python garbage collector can delete the object at the wrong time and as a side effect raise the error you mention. My advise is to make sure that your objects have a proper parent. I think it should fix the problem.
PS: I haven't checked the docs for every class you use. Maybe
QFileSystemModel is not the only class on which this thing happens.
pass in self into the instantiation of it if you are not subclassing it like so QFileSystemModel(self)