修改AI生图相关日志信息
This commit is contained in:
@@ -30,6 +30,9 @@ def create_ai_image_panel(self):
|
||||
self._ai_image_requesting = False
|
||||
self._ai_image_progress_job = None
|
||||
self._ai_image_progress_phase = 0
|
||||
self._ai_image_cancel_event = None
|
||||
self._ai_image_request_seq = 0
|
||||
self._ai_image_active_seq = 0
|
||||
|
||||
container = ttk.Frame(frame, padding=10)
|
||||
container.pack(fill=tk.BOTH, expand=True)
|
||||
@@ -170,6 +173,12 @@ def create_ai_image_panel(self):
|
||||
command=lambda: _start_new_session(self),
|
||||
)
|
||||
self.ai_image_new_session_btn.pack(side=tk.RIGHT, padx=(0, 6))
|
||||
self.ai_image_stop_btn = ttk.Button(
|
||||
send_row, text="停止", bootstyle="danger-outline", width=10,
|
||||
command=lambda: _stop_request(self),
|
||||
)
|
||||
self.ai_image_stop_btn.pack(side=tk.RIGHT, padx=(0, 6))
|
||||
self.ai_image_stop_btn.configure(state=tk.DISABLED)
|
||||
|
||||
# 注册面板
|
||||
self.register_panel("ai_image", frame, None, "ai_image_visible")
|
||||
@@ -386,25 +395,35 @@ def _send_prompt(self):
|
||||
messagebox.showinfo("提示", "请输入内容")
|
||||
return
|
||||
|
||||
self._ai_image_request_seq += 1
|
||||
req_seq = self._ai_image_request_seq
|
||||
self._ai_image_active_seq = req_seq
|
||||
self._ai_image_cancel_event = threading.Event()
|
||||
_set_requesting(self, True)
|
||||
is_remote_url = _svc.is_remote_image_url(prompt)
|
||||
self.ai_image_status_var.set("下载中…" if is_remote_url else "后端处理中…")
|
||||
|
||||
def _success(record):
|
||||
self.root.after(0, lambda: _on_request_done(self, record, None))
|
||||
self.root.after(0, lambda: _on_request_done(self, record, None, req_seq))
|
||||
|
||||
def _error(exc):
|
||||
self.root.after(0, lambda: _on_request_done(self, None, exc))
|
||||
self.root.after(0, lambda: _on_request_done(self, None, exc, req_seq))
|
||||
|
||||
if is_remote_url:
|
||||
_svc.import_image_from_url_async(
|
||||
prompt,
|
||||
on_success=_success,
|
||||
on_error=_error,
|
||||
cancel_event=self._ai_image_cancel_event,
|
||||
)
|
||||
return
|
||||
|
||||
_svc.request_image_async(prompt, on_success=_success, on_error=_error)
|
||||
_svc.request_image_async(
|
||||
prompt,
|
||||
on_success=_success,
|
||||
on_error=_error,
|
||||
cancel_event=self._ai_image_cancel_event,
|
||||
)
|
||||
|
||||
|
||||
def _set_requesting(self, flag: bool):
|
||||
@@ -412,6 +431,7 @@ def _set_requesting(self, flag: bool):
|
||||
try:
|
||||
self.ai_image_send_btn.configure(state=tk.DISABLED if flag else tk.NORMAL)
|
||||
self.ai_image_new_session_btn.configure(state=tk.DISABLED if flag else tk.NORMAL)
|
||||
self.ai_image_stop_btn.configure(state=tk.NORMAL if flag else tk.DISABLED)
|
||||
except Exception:
|
||||
pass
|
||||
if flag:
|
||||
@@ -432,7 +452,12 @@ def _set_requesting(self, flag: bool):
|
||||
pass
|
||||
|
||||
|
||||
def _on_request_done(self, record, exc):
|
||||
def _on_request_done(self, record, exc, req_seq):
|
||||
# 旧请求回调(例如用户已点击停止后)直接忽略
|
||||
if req_seq != getattr(self, "_ai_image_active_seq", 0):
|
||||
return
|
||||
self._ai_image_active_seq = 0
|
||||
self._ai_image_cancel_event = None
|
||||
_set_requesting(self, False)
|
||||
if exc is not None:
|
||||
self.ai_image_status_var.set(f"失败: {exc}")
|
||||
@@ -455,6 +480,18 @@ def _on_request_done(self, record, exc):
|
||||
break
|
||||
|
||||
|
||||
def _stop_request(self):
|
||||
"""停止当前生成任务(协作取消:屏蔽后续回调并恢复 UI)。"""
|
||||
if not getattr(self, "_ai_image_requesting", False):
|
||||
return
|
||||
event = getattr(self, "_ai_image_cancel_event", None)
|
||||
if event is not None:
|
||||
event.set()
|
||||
self._ai_image_active_seq = 0
|
||||
_set_requesting(self, False)
|
||||
self.ai_image_status_var.set("已停止生成")
|
||||
|
||||
|
||||
def _save_current(self):
|
||||
rec = getattr(self, "ai_image_current", None)
|
||||
if rec is None:
|
||||
|
||||
Reference in New Issue
Block a user