OpenCV の HighGUI で画像を表示させると、拡大縮小ボタンも表示された。
折角なので拡大ボタンを押して見ると、再描画まで1秒くらいかかった。ボタンクリックの読み取り間隔が遅いのだろうか・・・。
他の方法として Pillow でも画像表示させてみた。私の環境では、ImageMagick で画像が表示された。
ちょっと予想外だったし、そこから自由に作れそうにない。
PySimpleGUI を知って、サンプルを切り貼りして作ってみた。これなら使えそう。
import sys import io import PySimpleGUI as sg from PIL import Image if len(sys.argv) == 1: fname = sg.popup_get_file('Document Browser', 'Document file to open', no_window=True, file_types=( ("jpeg", "*.jpg"), ("jpeg", "*.jpeg"), ("png", "*.png"), ("tiff", "*.tiff"), # add more document types here ) ) else: fname = sys.argv[1] if not fname: sg.popup("Cancelling:", "No filename supplied") raise SystemExit("Cancelled: no filename supplied") # ------------------------------------------------------------------------------ # use PIL to read data of one image # ------------------------------------------------------------------------------ def get_img_data(f, maxsize=(1200, 850), first=False): """Generate image data using PIL """ img = Image.open(f) img.thumbnail(maxsize) if first: # tkinter is inactive the first time bio = io.BytesIO() img.save(bio, format="PNG") del img return bio.getvalue() return ImageTk.PhotoImage(img) # ------------------------------------------------------------------------------ image_elem = sg.Image(data = get_img_data(fname, first=True)) layout = [[image_elem]] window = sg.Window('Image Browser', layout, return_keyboard_events=True, location=(0, 0), use_default_focus=False) while True: # read the form event, values = window.read() print(event, values) # perform button and keyboard operations if event == sg.WIN_CLOSED: break window.close()