#!python # -*- mode: python; Encoding: utf-8; coding: utf-8 -*- # Last updated: <2026/03/23 16:59:10 +0900> """ 標準入力から受け取った画像データを tkinter で表示する。 Google Gemini に作成してもらった。 Windows11 x64 25H2 + Python 3.10.10 64bit """ import sys import io import tkinter as tk from PIL import Image, ImageTk def display_in_tkinter(): # 1. 標準入力からバイナリデータを読み込む input_data = sys.stdin.buffer.read() if not input_data: print("Error : Not found data") return try: # 2. Pillowで画像データとして読み込み pil_img = Image.open(io.BytesIO(input_data)) # 3. Tkinterウィンドウの設定 root = tk.Tk() root.title("Stdin Image Viewer") # --- キーバインド設定 --- # ESCキー、大文字Q、小文字q のいずれかでウィンドウを閉じる root.bind('', lambda e: root.destroy()) root.bind('', lambda e: root.destroy()) root.bind('', lambda e: root.destroy()) # 4. Pillowの画像をTkinter用のフォーマットに変換 tk_img = ImageTk.PhotoImage(pil_img) # 5. ラベルウィジェットに画像をセットして配置 label = tk.Label(root, image=tk_img) label.pack(padx=10, pady=10) # 6. Closeボタンの追加 # command=root.destroy を指定することでクリック時に終了します btn = tk.Button(root, text="Close (Q)", command=root.destroy, width=20) btn.pack(pady=5) # ウィンドウを表示 root.mainloop() except Exception as e: print(f"Error : {e}") if __name__ == "__main__": display_in_tkinter()