#!python """ Simple Image Viewer on PySimpleGUI """ import PySimpleGUI as sg from PIL import Image, ImageTk import io import sys # import os img_types = (".png", ".jpg", "jpeg", ".tiff", ".bmp") status_text = '' fname = None if not len(sys.argv) == 1: fname = sys.argv[1] if fname: if not fname.lower().endswith(img_types): sg.popup("Cancel", fname + " is Not image file") raise SystemExit("Canceling: Not image file") def get_img_data(f, maxsize=(1200, 850), first=False): """Generate image data using PIL.""" global status_text im = Image.open(f) status_text = "%d x %d" % im.size # original image size im.thumbnail(maxsize) status_text += " (%d x %d)" % im.size # thumbnail image size if first: bio = io.BytesIO() im.save(bio, format="PNG") del im return bio.getvalue() return ImageTk.PhotoImage(im) # layout firstfg = True if fname: image_elem = sg.Image(data=get_img_data(fname, first=firstfg)) fname_elem = sg.InputText(size=(80, 1), enable_events=True, default_text=fname) firstfg = False else: image_elem = sg.Image() fname_elem = sg.InputText(size=(80, 1), enable_events=True) status_elem = sg.Text(key='-STATUS-', size=(64, 1)) layout = [ [fname_elem, sg.FileBrowse(key='-FILENAME-')], [status_elem], [image_elem] ] # create window window = sg.Window('Image Viewer', layout, return_keyboard_events=True, location=(0, 0), use_default_focus=False) # event loop while True: event, values = window.read() if event in (None, 'Exit'): break if values['-FILENAME-'] != '': # filename select fname = values['-FILENAME-'] if fname.lower().endswith(img_types): # load image image_elem.update(data=get_img_data(fname, first=firstfg)) fname_elem.update(fname) status_elem.update(status_text) firstfg = False window.close()