Created
December 5, 2025 07:22
-
-
Save yuki-inaho/d47fc4ed44090e77e4d3bb27409305bd to your computer and use it in GitHub Desktop.
llm_agent_support_gui.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python3 | |
| import argparse | |
| import tkinter as tk | |
| from tkinter import scrolledtext | |
| def main(order_title_init, supplement_title_init): | |
| # メインウィンドウの作成 | |
| root = tk.Tk() | |
| root.title("Text Generator") | |
| # ルート直下にメインフレームを配置 | |
| main_frame = tk.Frame(root) | |
| main_frame.pack(padx=10, pady=10) | |
| # 左カラム用フレーム | |
| left_frame = tk.Frame(main_frame) | |
| left_frame.grid(row=0, column=0, padx=10, pady=10, sticky="n") | |
| # 右カラム用フレーム | |
| right_frame = tk.Frame(main_frame) | |
| right_frame.grid(row=0, column=1, padx=10, pady=10, sticky="n") | |
| # Entry 用に StringVar を用意 | |
| order_title_var = tk.StringVar(value=order_title_init) | |
| supplement_title_var = tk.StringVar(value=supplement_title_init) | |
| # --- 左カラム --- | |
| # Order Pane | |
| tk.Label(left_frame, text="Order Pane").grid(row=0, column=0, sticky="w") | |
| order_title_entry = tk.Entry(left_frame, textvariable=order_title_var, width=60) | |
| order_title_entry.grid(row=0, column=1, sticky="w") | |
| order_content_text = scrolledtext.ScrolledText(left_frame, width=60, height=20) | |
| order_content_text.grid(row=1, column=0, columnspan=2, pady=5) | |
| # Supplement Pane | |
| tk.Label(left_frame, text="Supplement Pane").grid(row=2, column=0, sticky="w") | |
| supplement_title_entry = tk.Entry(left_frame, textvariable=supplement_title_var, width=60) | |
| supplement_title_entry.grid(row=2, column=1, sticky="w") | |
| supplement_content_text = scrolledtext.ScrolledText(left_frame, width=60, height=20) | |
| supplement_content_text.grid(row=3, column=0, columnspan=2, pady=5) | |
| # --- 右カラム --- | |
| tk.Label(right_frame, text="Generated Text").grid(row=0, column=0, sticky="w") | |
| # 生成テキスト表示用 | |
| generated_text = scrolledtext.ScrolledText(right_frame, width=60, height=40) | |
| generated_text.grid(row=1, column=0, padx=5, pady=5) | |
| # --- ボタン動作の定義 --- | |
| # Cleanボタン押下時 | |
| def clean(): | |
| order_content_text.delete("1.0", "end") | |
| supplement_content_text.delete("1.0", "end") | |
| # Clean Supplementボタン押下時 | |
| def clean_supplement(): | |
| supplement_content_text.delete("1.0", "end") | |
| # Generateボタン押下時 | |
| def generate(): | |
| order_title = order_title_var.get() | |
| order_content = order_content_text.get("1.0", "end").strip() | |
| supplement_title = supplement_title_var.get() | |
| supplement_content = supplement_content_text.get("1.0", "end").strip() | |
| text = f"% {order_title}\n{order_content}\n\n% {supplement_title}\n{supplement_content}" | |
| # 生成結果を表示テキストボックスに反映 | |
| generated_text.delete("1.0", "end") | |
| generated_text.insert("end", text) | |
| # Copy to Clipboardボタン押下時 | |
| def copy_to_clipboard(): | |
| text = generated_text.get("1.0", "end") | |
| root.clipboard_clear() | |
| root.clipboard_append(text) | |
| root.update() # クリップボードへの反映 | |
| # --- ボタンを並べるフレーム --- | |
| button_frame = tk.Frame(root) | |
| button_frame.pack(padx=10, pady=10) | |
| generate_button = tk.Button(button_frame, text="Generate", width=10, height=2, command=generate) | |
| generate_button.grid(row=0, column=0, padx=5, pady=5) | |
| clean_button = tk.Button(button_frame, text="Clean", width=10, height=2, command=clean) | |
| clean_button.grid(row=0, column=1, padx=5, pady=5) | |
| clean_supplement_button = tk.Button(button_frame, text="Clean Supplement", width=15, height=2, command=clean_supplement) | |
| clean_supplement_button.grid(row=0, column=2, padx=5, pady=5) | |
| copy_button = tk.Button(button_frame, text="Copy to Clipboard", width=15, height=2, command=copy_to_clipboard) | |
| copy_button.grid(row=0, column=3, padx=5, pady=5) | |
| # メインループ開始 | |
| root.mainloop() | |
| if __name__ == "__main__": | |
| # コマンドライン引数のパース | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("-ot", "--order-title", default="命令", help="Initial content for -ORDER_TITLE-") | |
| parser.add_argument("-st", "--supplement-title", default="補助情報", help="Initial content for -SUPPLEMENT_TITLE-") | |
| args = parser.parse_args() | |
| # メイン関数呼び出し | |
| main(args.order_title, args.supplement_title) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment