zxcvb6958 commited on
Commit
c2c8183
·
1 Parent(s): 690f0bc

update UI

Browse files
Files changed (1) hide show
  1. app.py +104 -35
app.py CHANGED
@@ -129,7 +129,7 @@ css = """
129
  margin-top: 18px;
130
  letter-spacing: 2px;
131
  }
132
- /* 模块外层深蓝虚线圆角 */
133
  .blue-dash-border {
134
  border: 2.5px dashed #164fa0 !important;
135
  border-radius: 22px !important;
@@ -180,23 +180,33 @@ css = """
180
  .button-row {
181
  margin-top: 8px;
182
  }
183
- .gr-image, .gr-image-preview {
184
- border-radius: 10px !important;
 
 
 
 
 
 
 
 
 
 
 
 
 
185
  background: #fff !important;
186
  box-shadow: 0 2px 12px 0 rgba(60,64,67,.08);
187
  }
188
- .gr-box .gr-block.gr-group {
189
- box-shadow: none;
190
- border: none;
191
- }
192
- .img-label-bar {
193
  background: rgb(76, 180, 184);
194
  color: #fff;
195
  text-align: center;
196
  padding: 6px 0;
 
197
  border-bottom-left-radius: 10px;
198
  border-bottom-right-radius: 10px;
199
- margin-top: -5px;
200
  font-size: 14px;
201
  font-weight: normal;
202
  }
@@ -215,76 +225,135 @@ with gr.Blocks(title="消化道疾病智能分析系统") as demo:
215
  gr.HTML(f"<style>{css}</style>")
216
  gr.HTML("<div id='main-title'>消化道疾病智能分析系统</div>")
217
 
218
- # 第一行:增强&分割(每个模块外再加蓝色虚线边框)
219
  with gr.Row():
220
- # 图像增强
221
  with gr.Column():
222
  with gr.Group(elem_classes="blue-dash-border"):
223
  with gr.Group(elem_classes="big-group"):
224
  gr.HTML("<div class='big-title'>图像增强模块</div>")
225
- enhance_select = gr.Dropdown(choices=ENHANCE_CHOICES, value="---------------", label="请选择样例图片或者上传", filterable=True)
 
 
 
 
 
226
  with gr.Row():
227
  with gr.Column():
228
- enhance_input_img = gr.Image(show_label=False, interactive=False, width=300, height=300)
229
- gr.HTML("<div class='img-label-bar'>原始图片</div>")
 
 
 
 
230
  with gr.Column():
231
- enhance_output_img = gr.Image(show_label=False, interactive=False, width=300, height=300)
232
- gr.HTML("<div class='img-label-bar'>增强结果图片</div>")
233
- # 按钮直接并排
 
 
 
 
234
  with gr.Row(elem_classes="button-row"):
235
  enhance_reset_btn = gr.Button("清空", elem_classes="gray-btn")
236
  enhance_btn = gr.Button("点击执行图片增强", elem_classes="orange-btn")
237
- enhance_select.change(fn=show_enhance_input, inputs=enhance_select, outputs=enhance_input_img)
238
- enhance_btn.click(fn=enhance_demo, inputs=enhance_select, outputs=enhance_output_img)
239
- enhance_reset_btn.click(fn=reset_enhance, inputs=None, outputs=[enhance_select, enhance_input_img, enhance_output_img])
240
 
241
- # 图像分割
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
242
  with gr.Column():
243
  with gr.Group(elem_classes="blue-dash-border"):
244
  with gr.Group(elem_classes="big-group"):
245
  gr.HTML("<div class='big-title'>图像分割模块</div>")
246
- seg_select = gr.Dropdown(choices=SEG_CHOICES, value="---------------", label="请选择样例图片或者上传", filterable=True)
 
 
 
 
 
247
  with gr.Row():
248
  with gr.Column():
249
- seg_input_img = gr.Image(show_label=False, interactive=False, width=300, height=300)
250
- gr.HTML("<div class='img-label-bar'>输入图片</div>")
 
 
 
 
251
  with gr.Column():
252
- seg_output_img = gr.Image(show_label=False, interactive=False, width=300, height=300)
253
- gr.HTML("<div class='img-label-bar'>分割结果图片</div>")
 
 
 
 
 
254
  with gr.Row(elem_classes="button-row"):
255
  seg_reset_btn = gr.Button("清空", elem_classes="gray-btn")
256
  seg_btn = gr.Button("点击执行分割", elem_classes="orange-btn")
 
257
  seg_select.change(fn=show_seg_input, inputs=seg_select, outputs=seg_input_img)
258
  seg_btn.click(fn=segment_demo, inputs=seg_select, outputs=seg_output_img)
259
  seg_reset_btn.click(fn=reset_seg, inputs=None, outputs=[seg_select, seg_input_img, seg_output_img])
260
 
261
- # 第二行:疾病诊断(外层蓝色虚线,内层卡片)
262
  with gr.Row():
263
  with gr.Group(elem_classes="blue-dash-border"):
264
  with gr.Group(elem_classes="big-group"):
265
  gr.HTML("<div class='big-title'>疾病分类模块</div>")
266
  with gr.Row():
267
- # 左列:输入图片+按钮
268
  with gr.Column():
269
- diag_select = gr.Dropdown(choices=DIAG_CHOICES, value="---------------", label="请选择样例图片或者上传", filterable=True)
 
 
 
 
 
270
  with gr.Column():
271
- diag_input_img = gr.Image(show_label=False, interactive=False, width=300, height=300)
272
- gr.HTML("<div class='img-label-bar'>输入图片</div>")
 
 
 
 
273
  with gr.Row(elem_classes="button-row"):
274
  diag_reset_btn = gr.Button("清空", elem_classes="gray-btn")
275
  diag_btn = gr.Button("点击执行诊断", elem_classes="orange-btn")
 
276
  diag_select.change(fn=show_diag_input, inputs=diag_select, outputs=diag_input_img)
277
 
278
- # 中列:结果表格
279
  with gr.Column():
280
  diag_table = gr.Dataframe(headers=["类别", "概率"])
281
 
282
- # 右列:诊断结果 & 建议
283
  with gr.Column():
284
  diag_result = gr.Textbox(label="诊���结果")
285
  diag_suggestion = gr.Textbox(label="建议的治疗方案")
286
 
287
- diag_btn.click(fn=diagnose_demo, inputs=diag_select, outputs=[diag_table, diag_result, diag_suggestion])
288
- diag_reset_btn.click(fn=reset_diag, inputs=None, outputs=[diag_select, diag_input_img, diag_table, diag_result, diag_suggestion])
 
 
 
 
 
 
 
 
289
 
290
  demo.launch()
 
129
  margin-top: 18px;
130
  letter-spacing: 2px;
131
  }
132
+ /* 外层深蓝虚线圆角 */
133
  .blue-dash-border {
134
  border: 2.5px dashed #164fa0 !important;
135
  border-radius: 22px !important;
 
180
  .button-row {
181
  margin-top: 8px;
182
  }
183
+
184
+ /* 让图片和标签容器固定宽度 300px,并保持紧贴 */
185
+ .image-label-container {
186
+ width: 300px;
187
+ margin: 0 auto;
188
+ display: inline-block;
189
+ position: relative;
190
+ text-align: center;
191
+ }
192
+ .image-label-container .gr-image,
193
+ .image-label-container .gr-image-preview {
194
+ width: 300px !important;
195
+ height: 300px !important;
196
+ margin-bottom: 0 !important;
197
+ border-radius: 10px 10px 0 0 !important;
198
  background: #fff !important;
199
  box-shadow: 0 2px 12px 0 rgba(60,64,67,.08);
200
  }
201
+ .image-label-container .img-label-bar {
202
+ width: 300px;
 
 
 
203
  background: rgb(76, 180, 184);
204
  color: #fff;
205
  text-align: center;
206
  padding: 6px 0;
207
+ margin-top: 0 !important;
208
  border-bottom-left-radius: 10px;
209
  border-bottom-right-radius: 10px;
 
210
  font-size: 14px;
211
  font-weight: normal;
212
  }
 
225
  gr.HTML(f"<style>{css}</style>")
226
  gr.HTML("<div id='main-title'>消化道疾病智能分析系统</div>")
227
 
228
+ # ============ 第一行:增强 & 分割 ============
229
  with gr.Row():
230
+ # ---------- 图像增强 ----------
231
  with gr.Column():
232
  with gr.Group(elem_classes="blue-dash-border"):
233
  with gr.Group(elem_classes="big-group"):
234
  gr.HTML("<div class='big-title'>图像增强模块</div>")
235
+ enhance_select = gr.Dropdown(
236
+ choices=ENHANCE_CHOICES,
237
+ value="---------------",
238
+ label="请选择样例图片或者上传",
239
+ filterable=True
240
+ )
241
  with gr.Row():
242
  with gr.Column():
243
+ with gr.Group(elem_classes="image-label-container"):
244
+ enhance_input_img = gr.Image(
245
+ show_label=False, interactive=False,
246
+ width=300, height=300
247
+ )
248
+ gr.HTML("<div class='img-label-bar'>原始图片</div>")
249
  with gr.Column():
250
+ with gr.Group(elem_classes="image-label-container"):
251
+ enhance_output_img = gr.Image(
252
+ show_label=False, interactive=False,
253
+ width=300, height=300
254
+ )
255
+ gr.HTML("<div class='img-label-bar'>增强结果图片</div>")
256
+
257
  with gr.Row(elem_classes="button-row"):
258
  enhance_reset_btn = gr.Button("清空", elem_classes="gray-btn")
259
  enhance_btn = gr.Button("点击执行图片增强", elem_classes="orange-btn")
 
 
 
260
 
261
+ enhance_select.change(
262
+ fn=show_enhance_input,
263
+ inputs=enhance_select,
264
+ outputs=enhance_input_img
265
+ )
266
+ enhance_btn.click(
267
+ fn=enhance_demo,
268
+ inputs=enhance_select,
269
+ outputs=enhance_output_img
270
+ )
271
+ enhance_reset_btn.click(
272
+ fn=reset_enhance,
273
+ inputs=None,
274
+ outputs=[enhance_select, enhance_input_img, enhance_output_img]
275
+ )
276
+
277
+ # ---------- 图像分割 ----------
278
  with gr.Column():
279
  with gr.Group(elem_classes="blue-dash-border"):
280
  with gr.Group(elem_classes="big-group"):
281
  gr.HTML("<div class='big-title'>图像分割模块</div>")
282
+ seg_select = gr.Dropdown(
283
+ choices=SEG_CHOICES,
284
+ value="---------------",
285
+ label="请选择样例图片或者上传",
286
+ filterable=True
287
+ )
288
  with gr.Row():
289
  with gr.Column():
290
+ with gr.Group(elem_classes="image-label-container"):
291
+ seg_input_img = gr.Image(
292
+ show_label=False, interactive=False,
293
+ width=300, height=300
294
+ )
295
+ gr.HTML("<div class='img-label-bar'>输入图片</div>")
296
  with gr.Column():
297
+ with gr.Group(elem_classes="image-label-container"):
298
+ seg_output_img = gr.Image(
299
+ show_label=False, interactive=False,
300
+ width=300, height=300
301
+ )
302
+ gr.HTML("<div class='img-label-bar'>分割结果图片</div>")
303
+
304
  with gr.Row(elem_classes="button-row"):
305
  seg_reset_btn = gr.Button("清空", elem_classes="gray-btn")
306
  seg_btn = gr.Button("点击执行分割", elem_classes="orange-btn")
307
+
308
  seg_select.change(fn=show_seg_input, inputs=seg_select, outputs=seg_input_img)
309
  seg_btn.click(fn=segment_demo, inputs=seg_select, outputs=seg_output_img)
310
  seg_reset_btn.click(fn=reset_seg, inputs=None, outputs=[seg_select, seg_input_img, seg_output_img])
311
 
312
+ # ============ 第二行:疾病诊断 ============
313
  with gr.Row():
314
  with gr.Group(elem_classes="blue-dash-border"):
315
  with gr.Group(elem_classes="big-group"):
316
  gr.HTML("<div class='big-title'>疾病分类模块</div>")
317
  with gr.Row():
318
+ # ---------- 左列:输入图片 + 按钮 ----------
319
  with gr.Column():
320
+ diag_select = gr.Dropdown(
321
+ choices=DIAG_CHOICES,
322
+ value="---------------",
323
+ label="请选择样例图片或者上传",
324
+ filterable=True
325
+ )
326
  with gr.Column():
327
+ with gr.Group(elem_classes="image-label-container"):
328
+ diag_input_img = gr.Image(
329
+ show_label=False, interactive=False,
330
+ width=300, height=300
331
+ )
332
+ gr.HTML("<div class='img-label-bar'>输入图片</div>")
333
  with gr.Row(elem_classes="button-row"):
334
  diag_reset_btn = gr.Button("清空", elem_classes="gray-btn")
335
  diag_btn = gr.Button("点击执行诊断", elem_classes="orange-btn")
336
+
337
  diag_select.change(fn=show_diag_input, inputs=diag_select, outputs=diag_input_img)
338
 
339
+ # ---------- 中列:结果表格 ----------
340
  with gr.Column():
341
  diag_table = gr.Dataframe(headers=["类别", "概率"])
342
 
343
+ # ---------- 右列:诊断结果 & 建议 ----------
344
  with gr.Column():
345
  diag_result = gr.Textbox(label="诊���结果")
346
  diag_suggestion = gr.Textbox(label="建议的治疗方案")
347
 
348
+ diag_btn.click(
349
+ fn=diagnose_demo,
350
+ inputs=diag_select,
351
+ outputs=[diag_table, diag_result, diag_suggestion]
352
+ )
353
+ diag_reset_btn.click(
354
+ fn=reset_diag,
355
+ inputs=None,
356
+ outputs=[diag_select, diag_input_img, diag_table, diag_result, diag_suggestion]
357
+ )
358
 
359
  demo.launch()