Reputation: 1251
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
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
Upvotes: 5
Reputation: 310297
It appears that tkFileDialog.askdirectory
should work. documentation
Upvotes: 119
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