Skip to content

Instantly share code, notes, and snippets.

@yuki-inaho
Created December 5, 2025 07:22
Show Gist options
  • Select an option

  • Save yuki-inaho/d47fc4ed44090e77e4d3bb27409305bd to your computer and use it in GitHub Desktop.

Select an option

Save yuki-inaho/d47fc4ed44090e77e4d3bb27409305bd to your computer and use it in GitHub Desktop.
llm_agent_support_gui.py
#!/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