MCPcopy Create free account
hub / github.com/PyQt5/PyQt / JsonTreeWidget

Class JsonTreeWidget

QTreeWidget/ParsingJson.py:53–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51
52
53class JsonTreeWidget(QTreeWidget):
54
55 def __init__(self, *args, **kwargs):
56 super(JsonTreeWidget, self).__init__(*args, **kwargs)
57 self.setEditTriggers(self.NoEditTriggers)
58 self.header().setVisible(False)
59 # 帮点单击事件
60 self.itemClicked.connect(self.onItemClicked)
61
62 def onItemClicked(self, item):
63 """item单击事件"""
64 if item.url: # 调用浏览器打开网址
65 webbrowser.open_new_tab(item.url)
66
67 def parseData(self, datas, parent=None):
68 """解析json数据"""
69 for data in datas:
70 url = data.get('url', '')
71 items = data.get('items', [])
72 # 生成item
73 _item = QTreeWidgetItem(parent)
74 _item.setIcon(0, QIcon(data.get('icon', '')))
75 _widget = ItemWidget(
76 data.get('name', ''),
77 data.get('badge', []),
78 self
79 )
80 _item.url = url # 可以直接设置变量值
81 self.setItemWidget(_item, 0, _widget)
82 if url:
83 continue # 跳过
84 # 解析儿子
85 if items:
86 self.parseData(items, _item)
87
88 def loadData(self, path):
89 """加载json数据"""
90 datas = open(path, 'rb').read()
91 datas = datas.decode(chardet.detect(datas).get('encoding', 'utf-8'))
92 self.parseData(json.loads(datas), self)
93
94
95if __name__ == '__main__':

Callers 1

ParsingJson.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected