高度なウィジェットセレクター4
import tkinter as tk
from tkinter import ttk
def on_select():
for child in container.winfo_children():
child.destroy()
name = combo.get()
if name == "オプションメニュー (OptionMenu)":
# 変数と連動する古いスタイルの選択メニュー
var = tk.StringVar(root)
var.set("選択肢1")
w = tk.OptionMenu(container, var, "選択肢1", "選択肢2", "選択肢3")
elif name == "システムアイコン (Bitmap)":
# Tkinter内蔵のアイコンを表示
w = tk.Frame(container)
icons = ["error", "gray75", "info", "questhead", "question", "warning"]
for icon in icons:
tk.Label(w, bitmap=icon).pack(side="left", padx=5)
elif name == "ラベル画像 (Image)":
# ラベルにテキストではなく画像(または文字との併用)を表示
# ※Pydroidに画像ファイルがない場合を想定し、ドット絵風のデータを作成
w = tk.Label(container, text="📸 画像エリア", compound="top",
relief="solid", padx=20, pady=20)
elif name == "リアルタイム連動 (Trace)":
# 入力ボックスに文字を打つと、リアルタイムで下のラベルが変わる
w = tk.Frame(container)
var = tk.StringVar()
var.trace_add("write", lambda *args: label.config(text=f"入力中: {var.get()}"))
entry = tk.Entry(w, textvariable=var)
entry.pack()
label = tk.Label(w, text="ここに入力内容が反映されます", fg="blue")
label.pack(pady=10)
elif name == "セパレータ(垂直)":
# 左右を分ける縦線
w = tk.Frame(container)
tk.Label(w, text="左").pack(side="left", expand=True)
ttk.Separator(w, orient="vertical").pack(side="left", fill="y", padx=10)
tk.Label(w, text="右").pack(side="left", expand=True)
w.pack(pady=30, padx=20)
container.update()
# --- メイン設定 ---
root = tk.Tk()
root.title("Ultra Widget Selector")
root.geometry("400x500")
widget_list = [
"オプションメニュー (OptionMenu)",
"システムアイコン (Bitmap)",
"ラベル画像 (Image)",
"リアルタイム連動 (Trace)",
"セパレータ(垂直)"
]
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, width=15).pack()
container = tk.Frame(root, bd=1, relief="groove", width=350, height=250)
container.pack(pady=20)
container.pack_propagate(False)
root.mainloop()
コメント
コメントを投稿