Brad Conyers
Brad Conyers

Reputation: 1251

How to select a directory and store the location using tkinter in Python

I am creating a GUI with a browse button which I only want to return the path. I've been looking at solutions using code like below.

Tkinter.Button(subframe, text = "Browse", command = self.loadtemplate, width = 10).pack()

   def loadtemplate(self): 
        filename = tkFileDialog.askopenfilename(filetypes = (("Template files", "*.tplate")
                                                             ,("HTML files", "*.html;*.htm")
                                                             ,("All files", "*.*") ))
        if filename: 
            try: 
                self.settings["template"].set(filename)
            except: 
                tkMessageBox.showerror("Open Source File", "Failed to read file \n'%s'"%filename)

However I know Tkinter has a built in askopenfilename which is a super easy one line of code for opening files. Is there some way to modify this to return the directory instead of a file? Is there a smaller option than the larger chunk of code I posted?

Upvotes: 71

Views: 247900

Answers (3)

Mahammadhusain kadiwala
Mahammadhusain kadiwala

Reputation: 3650

Go with this code First, select the directory for creating a new file

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()
# file_path = filedialog.askopenfilename()
file_path = filedialog.askdirectory()

new_file = input("Name file\n")
open_file = open(f"{file_path}\%s.py" % new_file, 'w')

in my case

i created (ok.py) file in ppppp directory

path is: PS C:\Users\demo\Desktop\ppppp\ok.py

enter image description here

Upvotes: 5

mgilson
mgilson

Reputation: 310297

It appears that tkFileDialog.askdirectory should work. documentation

Upvotes: 119

Siva Madugula
Siva Madugula

Reputation: 451

This code may be helpful for you.

from tkinter import filedialog
from tkinter import *
root = Tk()
root.withdraw()
folder_selected = filedialog.askdirectory()

Upvotes: 45

Related Questions