【发布时间】:2016-12-13 12:43:10
【问题描述】:
我想用 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 中工作。感谢您的回答!
【问题讨论】:
-
看起来您的代码已经能够让用户浏览目录,并将其保存到变量中。你为什么需要帮助?您不喜欢当前解决方案的哪些方面?
-
这样不行,程序找不到目录和文件。所以我想肯定是我做错了什么或者我可以做更多的事情,但我自己似乎无法弄清楚。
-
“程序找不到目录”是什么意思?当您调用
askdirectory时,程序不会执行任何操作。搜索并找到目录的是用户。您是说某些目录没有显示在对话框中吗? -
对我来说,浏览按钮似乎在那里,但它没有做任何事情。当我通过浏览按钮选择包含要运行控件的文件的目录,然后单击运行控件的按钮(包括我问题中的编码中的“runanalyze1”)时,当前目录中的文件被复制并控制(我保存脚本的目录),而不是使用浏览按钮选择的目录。