I have a python code :
import gdal import numpy from skimage.filters import threshold_otsu ds = gdal.Open('A:\\algo\\f2.tif') band = ds.GetRasterBand(1) arr = band.ReadAsArray() thresh = threshold_otsu(arr,16) binary = arr > thresh driver = gdal.GetDriverByName("GTiff") outdata = driver.Create("A:\\algo\\test11.tif", 14823, 9985, 1, gdal.GDT_UInt16) outdata.SetGeoTransform(ds.GetGeoTransform()) outdata.SetProjection(ds.GetProjection()) outdata.GetRasterBand(1).WriteArray(binary) outdata.GetRasterBand(1).SetNoDataValue(10000) outdata.FlushCache() ##saves to disk!! outdata = None band=None ds=None
In this code, line 4 gives the location/path of "input file" and line 10 gives the location of "output file".
I want to create a user interface to give this location in the user interface itself and run the code from user interface itself.
I have tried making a user interface using "tkinter" module :
from tkinter import * from tkinter import filedialog def input(): file1 = filedialog.askopenfile() label = Label(text=file1).pack() def input2(): file2 = filedialog.asksaveasfile(mode="w", defaultextension=".tif") label = Label(text=file2).pack() w = Tk() w.geometry("500x500") w.title("FLOOD_MAPPER") h = Label(text = "S1A FLOOD MAPPER", bg = "yellow", fg = "black", height = "3", width = "500") h.pack() i1 = Label(text = "Input*") i1.place(x=10, y=70) i1b = Button(w, text = "Select File", command =input) i1b.place(x=250, y=70) i2 = Label(text = "Intermediate Product*") i2.place(x=10, y=140) i2b = Button(w, text = "Save as", command =input2) i2b.place(x=250, y=140) button = Button(w, text="Generate Map", bg = "red", fg = "black", height = "2", width="30") button.place(x=150, y=400) w.mainloop()
But I didn't understand how to link these two codes.
The moment I click on button "generate map" in the user interface I want the location/path of Input and output given in the user interface box to move to their respective places in the 1st code and then run the same code aumoatically.
Kindly, help me to achieve my requirement.