from tkinter import * from tkinter.filedialog import * from PIL import Image import matplotlib.pyplot as plt import os import tkinter.messagebox def onclick(event): global x1,y1,x2,y2 global k k=k+1 # print('%d button=%d, x=%d, y=%d, xdata=%f, ydata=%f' %( # k,event.button, event.x, event.y, event.xdata, event.ydata)) if k==1: x1=int(event.xdata); y1=int(event.ydata); if k==2: x2=int(event.xdata); y2=int(event.ydata); def show_img1(): global fpath,fr,im1 global x1,y1,x2,y2 global k fr=fpath im1 = Image.open(fr) # print(im1.size) strt=fr+' : size'+str(im1.size) k=0 fig=plt.figure() plt.imshow(im1) plt.title(strt, fontsize=20) fig.canvas.mpl_connect('button_press_event', onclick) plt.show() plt.close() def show_img2(): global fr,im1 global x1,y1,x2,y2 # print(x1,y1,x2,y2) strt=fr+' : size'+str(im1.size) plt.imshow(im1) plt.gca().add_patch(plt.Rectangle(xy=[x1,y1], width=x2-x1, height=y2-y1, fill=False, edgecolor='red',lw=2)) plt.title(strt, fontsize=20) plt.show() plt.close() def show_img3(): global fpath,im1 global x1,y1,x2,y2 fw=os.path.dirname(fpath)+'\\fig_crop_'+os.path.basename(fpath) box = (x1,y1,x2,y2) im2 = im1.crop(box) im2.save(fw) strt=fw+' : size'+str(im2.size) plt.imshow(im2) plt.title(strt, fontsize=20) plt.show() plt.close() root = Tk() listbox = Listbox(root,width=60,height=5) listbox.pack() fpath=askopenfilename(initialdir='c:\\',filetypes=[('Text files', '*.png;*.jpg;*.JPG')]) listbox.insert(END, fpath) listbox.insert(END, os.path.basename(fpath)) listbox.insert(END, os.path.dirname(fpath)) mainloop() try: show_img1() show_img2() show_img3() tkinter.messagebox.showinfo('showinfo', 'Image was saved as "fig_crop_*" successfully') except: tkinter.messagebox.showerror('showerror', 'No click')