2

Working with Python and Tkinter, I have been trying to find out the way to show the file_path beside the Browse Button but unable to do so.

Here is my code:

  import os
  from tkFileDialog import askopenfilename
  from Tkinter import *


  content = ''
  file_path = ''


  #~~~~ FUNCTIONS~~~~

  def open_file():
    global content
    global file_path

    filename = askopenfilename()
    infile = open(filename, 'r')
    content = infile.read()
    file_path = os.path.dirname(filename)
    return content

  def process_file(content):
    print content

  #~~~~~~~~~~~~~~~~~~~


  #~~~~~~ GUI ~~~~~~~~

  root = Tk()
  root.title('Urdu Mehfil Ginti Converter')
  root.geometry("598x120+250+100")

  mf = Frame(root)
  mf.pack()


  f1 = Frame(mf, width=600, height=250)
  f1.pack(fill=X)
  f2 = Frame(mf, width=600, height=250)
  f2.pack()

  file_path = StringVar


  Label(f1,text="Select Your File (Only txt files)").grid(row=0, column=0, sticky='e')
  Entry(f1, width=50, textvariable=file_path).grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)
  Button(f1, text="Browse", command=open_file).grid(row=0, column=27, sticky='ew', padx=8, pady=4)
  Button(f2, text="Process Now", width=32, command=lambda: process_file(content)).grid(sticky='ew', padx=10, pady=10)


  root.mainloop()


  #~~~~~~~~~~~~~~~~~~~

Kindly guide me as how I can show the file path along with the "Browse Button" button after the user selects the file as shown in this image.

Thanks in advance!

2 Answers 2

4

First, change this line:

    Entry(f1, width=50, textvariable=file_path).grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)

to this:

entry = Entry(f1, width=50, textvariable=file_path)
entry.grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=25)

Then, in the open_file() function, add these two lines, just before the return:

entry.delete(0, END)
entry.insert(0, file_path)

Explanation: First, we give the entry a name, so that it can be modified. Then, in the open_file() function we clear it and add the text for the file-path.

Sign up to request clarification or add additional context in comments.

2 Comments

Thank you very much @laurencevs! I spend hours to get this functional but I was unable. Thanks a lot.
@pleasureinblues You can show others that this answer was useful by clicking on the little tick on its left.
0

Here is a diff that fixes instead the file_path, i.e. the StringVar() usage:

--- old.py      2016-08-10 18:22:16.203016340 +0200
+++ new.py      2016-08-10 18:24:59.115328029 +0200
@@ -4,7 +4,6 @@


 content = ''
-file_path = ''


 #~~~~ FUNCTIONS~~~~
@@ -16,7 +15,7 @@
   filename = askopenfilename()
   infile = open(filename, 'r')
   content = infile.read()
-  file_path = os.path.dirname(filename)
+  file_path.set(os.path.dirname(filename))
   return content

 def process_file(content):
@@ -40,7 +39,7 @@
 f2 = Frame(mf, width=600, height=250)
 f2.pack()

-file_path = StringVar
+file_path = StringVar(root)


 Label(f1,text="Select Your File (Only txt files)").grid(row=0, column=0, sticky='e')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.