浏览目录tkinter

时间:2016-12-13 12:43:10

标签: python tkinter directory

我想用tkinter创建一个浏览按钮来浏览包含某些文件的目录。我正在制作一个程序,它应该复制文件并在某些目录中对这些文件运行一些控件,但目录可能会不时变化。浏览按钮将位于开始页面上,您应该能够选择一个目录,然后单击另一个按钮来运行程序中的一个控件,并且在控件期间将使用该目录的文件。我还添加了一个条目,它应该说明选择了哪个目录。有谁知道如何浏览目录并存储它的路径供以后使用?以及如何将条目和通过浏览选择的目录联系在一起?

我的tkinter脚本看起来像这样(正在进行中):

from tkinter import *
import os

LARGE_FONT = ("Verdana", 12)
current_dir = os.getcwd()


class Gui(Tk):

 def __init__(self, *args, **kwargs):
    Tk.__init__(self, *args, **kwargs)

    Tk.wm_title(self, "My controls")

    container = Frame(self)
    container.pack(side="top", fill="both", expand=True)
    container.grid_rowconfigure(0, weight=1)
    container.grid_columnconfigure(0, weight=1)

    self.geometry("350x500")

    self.frames = {}

    frame = StartPage(container, self)

    self.frames[StartPage] = frame

    frame.grid(row=0, column=0, sticky="nsew")

    self.show_frame(StartPage)

 def show_frame(self, cont):

    frame = self.frames[cont]
    frame.tkraise()


class StartPage(Frame):

 def __init__(self, parent, controller):
    Frame.__init__(self, parent)
    label = Label(self, text="My controls",     font=LARGE_FONT)
    label.pack(pady=10, padx=10)
    self.buttons()
    self.program = ""

 *#Defining the browsebutton, any suggestions on what I should do next?**

 def browsedir(self):
    from tkinter.filedialog import askdirectory

    Tk().withdraw()
    self.filename = askdirectory()

*#Defining the copying of the files and filepath. How to make the filepath variable?*

def runanalyze1(filepath):
  for txt in os.listdir(filepath):
    if txt.endswith('.txt'):
        copyfiles(from_path=filepath+"\\"+txt, to_path=r"C:\catalog"+"\\"+txt)

 def buttons(self):

    self.pack(fill=BOTH, expand=1)
    analyze1button = Button(self, text="Copyfiles", command=self.runanalyze1)
    analyze1button.place(x=50, y=150) 

    quitbutton = Button(self, text="Quit", command=self.quit)
    quitbutton.place(x=150, y=250)

    *#Creating the browse button*

    browsebutton = Button(self, text="Browse", command=self.browsedir)
    browsebutton.pack(side=BOTTOM)

   *#Creating an entry, not sure how to tie this to the browse button either.*

    e1 = Entry(self, bd=5)
    e1.pack(side=BOTTOM)
    e1.insert(0, "{}".format(current_dir))

if __name__ == "__main__":
  app = Gui()
  app.mainloop()

注意:我有更多代码用于控制的其余部分等。我刚刚添加了与问题相关的内容。使用Python 3.4.1。感谢答案!

1 个答案:

答案 0 :(得分:0)

尝试阅读os.path模块。它在查找路径时有一些有趣的东西,您可以将它们存储为字符串变量,因为它们是绝对路径。另一个有用的东西是os.getcwd()os.path.dirname(__file__),它们给出了几乎相同的东西,即当前目录的路径。第一个给出文件执行的目录,第二个是文件所在的目录。