Files
AI_NovelGenerator/ui/main_tab.py
T
YILING0013 ba10e6dd66 进行文件的逻辑拆分
初步对ui.py以及novel_generator.py进行了拆分
2025-02-16 22:32:32 +08:00

104 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ui/main_tab.py
# -*- coding: utf-8 -*-
import customtkinter as ctk
from tkinter import messagebox
from ui.context_menu import TextWidgetContextMenu
def build_main_tab(self):
"""
主Tab包含左侧的"本章内容"编辑框和输出日志,以及右侧的主要操作和参数设置区
"""
self.main_tab = self.tabview.add("Main Functions")
self.main_tab.rowconfigure(0, weight=1)
self.main_tab.columnconfigure(0, weight=1)
self.main_tab.columnconfigure(1, weight=0)
self.left_frame = ctk.CTkFrame(self.main_tab)
self.left_frame.grid(row=0, column=0, sticky="nsew", padx=2, pady=2)
self.right_frame = ctk.CTkFrame(self.main_tab)
self.right_frame.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)
build_left_layout(self)
build_right_layout(self)
def build_left_layout(self):
"""
左侧区域:本章内容(可编辑) + Step流程按钮 + 输出日志(只读)
"""
self.left_frame.grid_rowconfigure(0, weight=0)
self.left_frame.grid_rowconfigure(1, weight=2)
self.left_frame.grid_rowconfigure(2, weight=0)
self.left_frame.grid_rowconfigure(3, weight=0)
self.left_frame.grid_rowconfigure(4, weight=1)
self.left_frame.columnconfigure(0, weight=1)
chapter_label = ctk.CTkLabel(self.left_frame, text="本章内容 (可编辑)", font=("Microsoft YaHei", 12))
chapter_label.grid(row=0, column=0, padx=5, pady=(5, 0), sticky="w")
# 章节文本编辑框
self.chapter_result = ctk.CTkTextbox(self.left_frame, wrap="word", font=("Microsoft YaHei", 14))
TextWidgetContextMenu(self.chapter_result)
self.chapter_result.grid(row=1, column=0, sticky="nsew", padx=5, pady=(0, 5))
# Step 按钮区域
self.step_buttons_frame = ctk.CTkFrame(self.left_frame)
self.step_buttons_frame.grid(row=2, column=0, sticky="ew", padx=5, pady=5)
self.step_buttons_frame.columnconfigure((0, 1, 2, 3), weight=1)
self.btn_generate_architecture = ctk.CTkButton(
self.step_buttons_frame,
text="Step1. 生成架构",
command=self.generate_novel_architecture_ui,
font=("Microsoft YaHei", 12)
)
self.btn_generate_architecture.grid(row=0, column=0, padx=5, pady=2, sticky="ew")
self.btn_generate_directory = ctk.CTkButton(
self.step_buttons_frame,
text="Step2. 生成目录",
command=self.generate_chapter_blueprint_ui,
font=("Microsoft YaHei", 12)
)
self.btn_generate_directory.grid(row=0, column=1, padx=5, pady=2, sticky="ew")
self.btn_generate_chapter = ctk.CTkButton(
self.step_buttons_frame,
text="Step3. 生成草稿",
command=self.generate_chapter_draft_ui,
font=("Microsoft YaHei", 12)
)
self.btn_generate_chapter.grid(row=0, column=2, padx=5, pady=2, sticky="ew")
self.btn_finalize_chapter = ctk.CTkButton(
self.step_buttons_frame,
text="Step4. 定稿章节",
command=self.finalize_chapter_ui,
font=("Microsoft YaHei", 12)
)
self.btn_finalize_chapter.grid(row=0, column=3, padx=5, pady=2, sticky="ew")
# 日志文本框
log_label = ctk.CTkLabel(self.left_frame, text="输出日志 (只读)", font=("Microsoft YaHei", 12))
log_label.grid(row=3, column=0, padx=5, pady=(5, 0), sticky="w")
self.log_text = ctk.CTkTextbox(self.left_frame, wrap="word", font=("Microsoft YaHei", 12))
TextWidgetContextMenu(self.log_text)
self.log_text.grid(row=4, column=0, sticky="nsew", padx=5, pady=(0, 5))
self.log_text.configure(state="disabled")
def build_right_layout(self):
"""
右侧区域:配置区(tabview) + 小说主参数 + 可选功能按钮
"""
self.right_frame.grid_rowconfigure(0, weight=0)
self.right_frame.grid_rowconfigure(1, weight=1)
self.right_frame.grid_rowconfigure(2, weight=0)
self.right_frame.columnconfigure(0, weight=1)
# 配置区(AI/Embedding
self.config_frame = ctk.CTkFrame(self.right_frame, corner_radius=10, border_width=2, border_color="gray")
self.config_frame.grid(row=0, column=0, sticky="ew", padx=5, pady=5)
self.config_frame.columnconfigure(0, weight=1)
# 其余部分将在 config_tab.py 与 novel_params_tab.py 中构建