def make_continent_view(self, type, callback, append_to): cc = ContinentCountries() if (type == 'rep'): data = cc.rep_continents elif (type == 'par'): data = cc.par_continents list = QTreeView() model = QStandardItemModel(0, 1) for key, values in sorted(data.items()): continent = QStandardItem(key) continent.setCheckable(True) for country in values: country = QStandardItem(country) country.setCheckable(True) continent.setChild(continent.rowCount(), country) model.setItem(model.rowCount(), continent) if (type == 'rep'): self.rep_top_item = model.index(0, 0) elif (type == 'par'): self.par_top_item = model.index(0, 0) model.itemChanged.connect(callback) list.setModel(model) list.setEditTriggers(QAbstractItemView.NoEditTriggers) list.setHeaderHidden(True) list.expandAll() proxy_model = FindFilterProxyModel() proxy_model.setSourceModel(model) proxy_model.setFilterKeyColumn(-1) list.setModel(proxy_model) list.expandAll() append_to.layout().addWidget(list) return [list, proxy_model, model]