import sys from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QTreeView from PyQt5.Qt import QStandardItemModel, QStandardItem from PyQt5.QtCore import pyqtSlot, QAbstractListModel import json import GlowstoneDust class App(QMainWindow): def __init__(self, target_dir='.'): super().__init__() self.title = 'Project Glowstone: Block Edition' self.left = 300 self.top = 300 self.width = 640 self.height = 480 self.target_dir = target_dir self.init_ui() def init_ui(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.treeView = QTreeView() self.treeView.setHeaderHidden(True) self.update_modlist(list(GlowstoneDust.get_modpack_info(self.target_dir))) self.statusBar().showMessage('Message') self.show() def update_modlist(self, modlist=None): self.treeModel = QStandardItemModel() self.rootNode = self.treeModel.invisibleRootItem() self.modlist = modlist or [] print(json.dumps(self.modlist, indent=4)) mc = QStandardItem('Minecraft') mc.setEditable(False) self.rootNode.appendRow(mc) for mod in self.modlist: mod_row = QStandardItem(mod['modid']) for dependant_mod in mod.get('dependencies', []): if dependant_mod is dict: mod_row.appendRow(QStandardItem(dependant_mod.get('modid'))) else: mod_row.appendRow(QStandardItem(dependant_mod)) mc.appendRow(mod_row) self.treeView.setModel(self.treeModel) self.treeView.expandAll() self.setCentralWidget(self.treeView) @pyqtSlot() def on_click(self): print('PyQt5 button click') @pyqtSlot() def make_tree(self): print("Making mod tree...") modpack_info = GlowstoneDust.get_modpack_info('.') print(json.dumps(modpack_info)) if __name__ == '__main__': app = QApplication(sys.argv) ex = App(target_dir=r"C:\Users\VY Canis Majoris\AppData\Roaming\.moddedminecraft\1.12\1.12.2\Sinkhole\mods") sys.exit(app.exec_())