I'm trying to make a tkinterdnd
function that when called on can allow the user to drag and drop a file into the box, and when the box is closed it returns the file path for the file put in as event_data
.
How do I get it to return this value if it is in the box?
def get_file_gui():
def show_text(event):
textarea.delete("1.0","end")
textarea.insert("end",f"{event.data}\n")
return event.data
root=TkinterDnD.Tk()
root.title("EFT Secure File Transfer")
root.geometry('400x300')
frame=Frame(root)
frame.pack()
textarea=Text(frame, height=30, width=40)
textarea.pack(side=LEFT)
textarea.drop_target_register(DND_FILES)
textarea.dnd_bind('<<BIND>>', show_text)
root.mainloop()
return event_data
You can create a local variable event_data
inside get_file_gui()
and update it inside nested function show_text()
:
def get_file_gui():
event_data = None # create and initialize "event_data"
def show_text(event):
nonlocal event_data
event_data = event.data # update "event_data"
textarea.delete("1.0", "end")
textarea.insert("end", f"{event.data}\n")
root = TkinterDnD.Tk()
root.title("EFT Secure File Transfer")
root.geometry('400x300')
frame = Frame(root)
frame.pack()
textarea = Text(frame, height=30, width=40)
textarea.pack(side=LEFT)
textarea.drop_target_register(DND_FILES)
textarea.dnd_bind('<<Drop>>', show_text) # bind "<<Drop>>" instead of "<<BIND>>"
root.mainloop()
return event_data