Logging Window system
if model is not None:


You do this all over the place. You should change it to:

if model:


@property is the Pythonic way to do getter and setters. For instance, I would do the following for the model variable:

Change:

self.model = model


To:

self._model = model


Create a property:

@property
def model(self):
    return self._model

@model.setter
def model(self, new_model):
    if new_model:
        self._model = new_model
    else:
        self._model = QStandardItemModel()
    self.setModel(self._model)


And do this for the other set functions.