| 177 | |
| 178 | |
| 179 | class ChartWidget(QWidget): |
| 180 | |
| 181 | def __init__(self, *args, **kwargs): |
| 182 | super(ChartWidget, self).__init__(*args, **kwargs) |
| 183 | self.resize(800, 600) |
| 184 | layout = QVBoxLayout(self) |
| 185 | layout.setContentsMargins(0, 0, 0, 0) |
| 186 | self.splitter = QSplitter(self) |
| 187 | layout.addWidget(self.splitter) |
| 188 | self.splitter.setOrientation(Qt.Horizontal) |
| 189 | self.splitter.setStretchFactor(0, 2) |
| 190 | self.splitter.setStretchFactor(1, 3) |
| 191 | self.splitter.setStretchFactor(2, 5) |
| 192 | self.splitter.setAutoFillBackground(True) |
| 193 | self.splitter.setChildrenCollapsible(False) |
| 194 | self.splitter.setHandleWidth(2) |
| 195 | # 分类 |
| 196 | self.classifyWidget = ClassifyWidget(self) |
| 197 | self.splitter.addWidget(self.classifyWidget) |
| 198 | # 代码 |
| 199 | self.codeWidget = CodeWidget(self) |
| 200 | self.splitter.addWidget(self.codeWidget) |
| 201 | |
| 202 | # 等待界面 |
| 203 | self.loadingWidget = LoadingWidget(self, visible=False) |
| 204 | self.loadingWidget.resize(self.size()) |
| 205 | |
| 206 | # 绑定信号槽 |
| 207 | self.classifyWidget.fileSelected.connect(self.codeWidget.openFile) |
| 208 | self.codeWidget.runSignal.connect(self.onRun) |
| 209 | |
| 210 | def onRun(self, text): |
| 211 | self.setEnabled(False) |
| 212 | self.loadingWidget.show() |
| 213 | # 解析json生成view并添加 |
| 214 | if hasattr(self, "previewView"): |
| 215 | # 删除旧view |
| 216 | self.previewView.setParent(None) |
| 217 | self.previewView.setVisible(False) |
| 218 | self.previewView.hide() |
| 219 | self.previewView.deleteLater() |
| 220 | del self.previewView |
| 221 | self.previewView = self.getChartView(text) |
| 222 | if isinstance(self.previewView, QChartView): |
| 223 | self.splitter.addWidget(self.previewView) |
| 224 | else: |
| 225 | QMessageBox.warning(self, "提示", self.previewView) |
| 226 | del self.previewView |
| 227 | self.setEnabled(True) |
| 228 | self.loadingWidget.close() |
| 229 | |
| 230 | def getChartView(self, text): |
| 231 | try: |
| 232 | return ChartView(text) |
| 233 | except Exception as e: |
| 234 | return str(e) |
| 235 | |
| 236 | def resizeEvent(self, event): |