lisonallen commited on
Commit
183a1ff
·
1 Parent(s): d4dcfc5

修复页面显示错误问题:优化错误消息处理和UI显示

Browse files
Files changed (1) hide show
  1. app.py +58 -9
app.py CHANGED
@@ -882,10 +882,12 @@ if IN_HF_SPACE and 'spaces' in globals():
882
  if flag == 'file':
883
  output_filename = data
884
  prev_output_filename = output_filename
885
- yield output_filename, gr.update(), gr.update(), gr.update(), gr.update(interactive=False), gr.update(interactive=True)
 
886
 
887
  if flag == 'progress':
888
  preview, desc, html = data
 
889
  yield gr.update(), gr.update(visible=True, value=preview), desc, html, gr.update(interactive=False), gr.update(interactive=True)
890
 
891
  if flag == 'error':
@@ -903,6 +905,7 @@ if IN_HF_SPACE and 'spaces' in globals():
903
  error_html = create_error_html(error_message)
904
  yield output_filename, gr.update(visible=False), gr.update(), error_html, gr.update(interactive=True), gr.update(interactive=False)
905
  else:
 
906
  yield output_filename, gr.update(visible=False), gr.update(), '', gr.update(interactive=True), gr.update(interactive=False)
907
  break
908
  except Exception as e:
@@ -956,10 +959,12 @@ else:
956
  if flag == 'file':
957
  output_filename = data
958
  prev_output_filename = output_filename
959
- yield output_filename, gr.update(), gr.update(), gr.update(), gr.update(interactive=False), gr.update(interactive=True)
 
960
 
961
  if flag == 'progress':
962
  preview, desc, html = data
 
963
  yield gr.update(), gr.update(visible=True, value=preview), desc, html, gr.update(interactive=False), gr.update(interactive=True)
964
 
965
  if flag == 'error':
@@ -977,6 +982,7 @@ else:
977
  error_html = create_error_html(error_message)
978
  yield output_filename, gr.update(visible=False), gr.update(), error_html, gr.update(interactive=True), gr.update(interactive=False)
979
  else:
 
980
  yield output_filename, gr.update(visible=False), gr.update(), '', gr.update(interactive=True), gr.update(interactive=False)
981
  break
982
  except Exception as e:
@@ -1137,7 +1143,40 @@ def make_custom_css():
1137
  padding: 10px;
1138
  border-radius: 4px;
1139
  margin-top: 10px;
 
 
 
 
1140
  background-color: rgba(255, 0, 0, 0.1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1141
  }
1142
  """
1143
 
@@ -1454,8 +1493,8 @@ with block:
1454
  progress_desc = gr.Markdown('', elem_classes='no-generating-animation')
1455
  progress_bar = gr.HTML('', elem_classes='no-generating-animation')
1456
 
1457
- # 错误信息区域
1458
- error_message = gr.Markdown('', elem_id='error-message')
1459
 
1460
  # 处理函数
1461
  ips = [input_image, prompt, n_prompt, seed, total_second_length, latent_window_size, steps, cfg, gs, rs, gpu_memory_preservation, use_teacache]
@@ -1500,22 +1539,32 @@ def create_error_html(error_msg, is_timeout=False):
1500
  en_msg = f"Processing error: {error_msg}"
1501
  zh_msg = f"处理过程出错: {error_msg}"
1502
 
1503
- # 创建双语错误消息HTML
1504
  return f"""
1505
- <div id="error-container" class="error-message">
1506
- <div class="error-msg-en" data-lang="en">{en_msg}</div>
1507
- <div class="error-msg-zh" data-lang="zh">{zh_msg}</div>
 
 
 
 
1508
  </div>
1509
  <script>
1510
  // 根据当前语言显示相应的错误消息
1511
  (function() {{
1512
- const errorContainer = document.getElementById('error-container');
1513
  if (errorContainer) {{
1514
  const currentLang = window.currentLang || 'en'; // 默认英语
1515
  const errMsgs = errorContainer.querySelectorAll('[data-lang]');
1516
  errMsgs.forEach(msg => {{
1517
  msg.style.display = msg.getAttribute('data-lang') === currentLang ? 'block' : 'none';
1518
  }});
 
 
 
 
 
 
1519
  }}
1520
  }})();
1521
  </script>
 
882
  if flag == 'file':
883
  output_filename = data
884
  prev_output_filename = output_filename
885
+ # 清除错误显示,确保文件成功时不显示错误
886
+ yield output_filename, gr.update(), gr.update(), '', gr.update(interactive=False), gr.update(interactive=True)
887
 
888
  if flag == 'progress':
889
  preview, desc, html = data
890
+ # 更新进度时不改变错误信息
891
  yield gr.update(), gr.update(visible=True, value=preview), desc, html, gr.update(interactive=False), gr.update(interactive=True)
892
 
893
  if flag == 'error':
 
905
  error_html = create_error_html(error_message)
906
  yield output_filename, gr.update(visible=False), gr.update(), error_html, gr.update(interactive=True), gr.update(interactive=False)
907
  else:
908
+ # 确保成功完成时不显示任何错误
909
  yield output_filename, gr.update(visible=False), gr.update(), '', gr.update(interactive=True), gr.update(interactive=False)
910
  break
911
  except Exception as e:
 
959
  if flag == 'file':
960
  output_filename = data
961
  prev_output_filename = output_filename
962
+ # 清除错误显示,确保文件成功时不显示错误
963
+ yield output_filename, gr.update(), gr.update(), '', gr.update(interactive=False), gr.update(interactive=True)
964
 
965
  if flag == 'progress':
966
  preview, desc, html = data
967
+ # 更新进度时不改变错误信息
968
  yield gr.update(), gr.update(visible=True, value=preview), desc, html, gr.update(interactive=False), gr.update(interactive=True)
969
 
970
  if flag == 'error':
 
982
  error_html = create_error_html(error_message)
983
  yield output_filename, gr.update(visible=False), gr.update(), error_html, gr.update(interactive=True), gr.update(interactive=False)
984
  else:
985
+ # 确保成功完成时不显示任何错误
986
  yield output_filename, gr.update(visible=False), gr.update(), '', gr.update(interactive=True), gr.update(interactive=False)
987
  break
988
  except Exception as e:
 
1143
  padding: 10px;
1144
  border-radius: 4px;
1145
  margin-top: 10px;
1146
+ }
1147
+
1148
+ /* 确保错误容器正确显示 */
1149
+ .error-message {
1150
  background-color: rgba(255, 0, 0, 0.1);
1151
+ padding: 10px;
1152
+ border-radius: 4px;
1153
+ margin-top: 10px;
1154
+ border: 1px solid #ffcccc;
1155
+ }
1156
+
1157
+ /* 处理多语言错误消息 */
1158
+ .error-msg-en, .error-msg-zh {
1159
+ font-weight: bold;
1160
+ }
1161
+
1162
+ /* 错误图标 */
1163
+ .error-icon {
1164
+ color: #ff4444;
1165
+ font-size: 18px;
1166
+ margin-right: 8px;
1167
+ }
1168
+
1169
+ /* 确保空错误消息不显示背景和边框 */
1170
+ #error-message:empty {
1171
+ background-color: transparent;
1172
+ border: none;
1173
+ padding: 0;
1174
+ margin: 0;
1175
+ }
1176
+
1177
+ /* 修复Gradio默认错误显示 */
1178
+ .error {
1179
+ display: none !important;
1180
  }
1181
  """
1182
 
 
1493
  progress_desc = gr.Markdown('', elem_classes='no-generating-animation')
1494
  progress_bar = gr.HTML('', elem_classes='no-generating-animation')
1495
 
1496
+ # 错误信息区域 - 确保使用HTML组件以支持我们的自定义错误消息格式
1497
+ error_message = gr.HTML('', elem_id='error-message', visible=True)
1498
 
1499
  # 处理函数
1500
  ips = [input_image, prompt, n_prompt, seed, total_second_length, latent_window_size, steps, cfg, gs, rs, gpu_memory_preservation, use_teacache]
 
1539
  en_msg = f"Processing error: {error_msg}"
1540
  zh_msg = f"处理过程出错: {error_msg}"
1541
 
1542
+ # 创建双语错误消息HTML - 添加有用的图标并确保CSS样式适用
1543
  return f"""
1544
+ <div class="error-message" id="custom-error-container">
1545
+ <div class="error-msg-en" data-lang="en">
1546
+ <span class="error-icon">⚠️</span> {en_msg}
1547
+ </div>
1548
+ <div class="error-msg-zh" data-lang="zh">
1549
+ <span class="error-icon">⚠️</span> {zh_msg}
1550
+ </div>
1551
  </div>
1552
  <script>
1553
  // 根据当前语言显示相应的错误消息
1554
  (function() {{
1555
+ const errorContainer = document.getElementById('custom-error-container');
1556
  if (errorContainer) {{
1557
  const currentLang = window.currentLang || 'en'; // 默认英语
1558
  const errMsgs = errorContainer.querySelectorAll('[data-lang]');
1559
  errMsgs.forEach(msg => {{
1560
  msg.style.display = msg.getAttribute('data-lang') === currentLang ? 'block' : 'none';
1561
  }});
1562
+
1563
+ // 确保Gradio默认错误UI不显示
1564
+ const defaultErrorElements = document.querySelectorAll('.error');
1565
+ defaultErrorElements.forEach(el => {{
1566
+ el.style.display = 'none';
1567
+ }});
1568
  }}
1569
  }})();
1570
  </script>