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

Class CityLinkageWindow

QComboBox/CityLinkage.py:53–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51
52
53class CityLinkageWindow(QWidget):
54
55 def __init__(self, *args, **kwargs):
56 super(CityLinkageWindow, self).__init__(*args, **kwargs)
57 layout = QHBoxLayout(self)
58 self.province_box = QComboBox(self, minimumWidth=200) # 市级以上
59 self.city_box = QComboBox(self, minimumWidth=200) # 市
60 self.county_box = QComboBox(self, minimumWidth=200) # 市级以下
61 layout.addWidget(QLabel("省/直辖市/特别行政区", self))
62 layout.addWidget(self.province_box)
63 layout.addItem(QSpacerItem(
64 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
65 layout.addWidget(QLabel("市", self))
66 layout.addWidget(self.city_box)
67 layout.addItem(QSpacerItem(
68 20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
69 layout.addWidget(QLabel("区/县", self))
70 layout.addWidget(self.county_box)
71 self.initModel()
72 self.initSignal()
73 self.initData()
74
75 def initSignal(self):
76 # 初始化信号槽
77 self.province_box.currentIndexChanged.connect(
78 self.city_model.setFilter)
79 self.city_box.currentIndexChanged.connect(self.county_model.setFilter)
80
81 def initModel(self):
82 # 初始化模型
83 self.province_model = SortFilterProxyModel(self)
84 self.city_model = SortFilterProxyModel(self)
85 self.county_model = SortFilterProxyModel(self)
86 # 设置模型
87 self.province_box.setModel(self.province_model)
88 self.city_box.setModel(self.city_model)
89 self.county_box.setModel(self.county_model)
90
91 def initData(self):
92 # 初始化数据
93 datas = open("Data/data.json", "rb").read()
94 encoding = chardet.detect(datas) or {}
95 datas = datas.decode(encoding.get("encoding", "utf-8"))
96 datas = json.loads(datas)
97 # 开始解析数据
98 for data in datas:
99 item_code = data.get("item_code") # 编码
100 item_name = data.get("item_name") # 名字
101 item = QStandardItem(item_name)
102 item.setData(item_code, Qt.ToolTipRole)
103 if item_code.endswith("0000"): # 4个0结尾的是市级以上的
104 self.province_model.appendRow(item)
105 elif item_code.endswith("00"): # 2个0结尾的是市
106 self.city_model.appendRow(item)
107 else: # 市以下
108 self.county_model.appendRow(item)
109
110

Callers 1

CityLinkage.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected