高度なウィジェットセレクター3
import tkinter as tk
from tkinter import ttk
from tkinter import colorchooser, filedialog, messagebox
def on_select():
# コンテナを掃除
for child in container.winfo_children():
child.destroy()
name = combo.get()
if name == "カラー選択 (ColorChooser)":
# ボタンを押すとOSの色選択が開く
def pick_color():
color = colorchooser.askcolor(title="色を選んでください")
if color[1]:
label_color.config(text=f"選んだ色: {color[1]}", bg=color[1])
btn = tk.Button(container, text="パレットを開く", command=pick_color)
btn.pack(pady=10)
label_color = tk.Label(container, text="ここに結果が出ます")
label_color.pack(pady=10)
elif name == "ファイル選択 (FileDialog)":
def open_file():
path = filedialog.askopenfilename()
label_path.config(text=f"パス: {path}")
tk.Button(container, text="ファイルを選ぶ", command=open_file).pack(pady=10)
label_path = tk.Label(container, text="未選択", wraplength=250)
label_path.pack(pady=10)
elif name == "サブウィンドウ (Toplevel)":
def open_window():
top = tk.Toplevel(root)
top.title("Sub Window")
top.geometry("200x200")
tk.Label(top, text="これは別ウィンドウです").pack(pady=50)
tk.Button(container, text="新しい窓を開く", command=open_window).pack(pady=30)
elif name == "サイズ変更つまみ (Sizegrip)":
# ウィンドウの右下に配置してサイズ変更を促す
tk.Label(container, text="右下に注目 ↘").pack(pady=50)
w = ttk.Sizegrip(container)
w.pack(side="right", anchor="se")
container.update()
# --- メイン画面の設定 ---
root = tk.Tk()
root.title("Final Widget Selector")
root.geometry("400x550")
widget_list = [
"カラー選択 (ColorChooser)",
"ファイル選択 (FileDialog)",
"サブウィンドウ (Toplevel)",
"サイズ変更つまみ (Sizegrip)"
]
combo = ttk.Combobox(root, values=widget_list, state="readonly", font=("Arial", 12))
combo.set("-- 特殊な機能を実行 --")
combo.pack(pady=20)
tk.Button(root, text="実行・表示", command=on_select, bg="#FF9800", fg="white").pack()
container = tk.Frame(root, bd=1, relief="sunken", width=350, height=300)
container.pack(pady=20)
container.pack_propagate(False)
root.mainloop()
コメント
コメントを投稿