我怎样才能在其中实现tkinter.filedialog.askdirectory()?

时间:2020-09-28 02:53:34

标签: python tkinter

我正在尝试做到这一点,因此可以在此简单的gui中更改源文件和目标文件的目录。在较早的文章中,我看到可以使用tkinter.filedialop.ask目录,但是我不知道如何在代码中实现它。我应该为源目录和目标目录分别创建一个按钮吗?

import shutil
import os
import tkinter as tk

source_dir = '/Users/shane/Desktop/test1/'
target_dir = '/Users/shane/Desktop/test2/'

file_names = os.listdir(source_dir)

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.testhi = tk.Button(self)
        self.testhi["text"] = "Move!"
        self.testhi["command"] = self.movefiles
        self.testhi.pack(side="top")

        self.quit = tk.Button(self, text="QUIT", fg="red",
                            command=self.master.destroy)
        self.quit.pack(side="bottom")


    def movefiles(self):
        for file_name in file_names:
            shutil.move(os.path.join(source_dir, file_name), target_dir) #for file_name in file_names:  #shutil.move(os.path.join(source_dir, file_name), target_dir)

root = tk.Tk()
app = Application(master=root)
app.mainloop()

1 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是仅实现filedialog.askdirectory(),它将替换我为源目录和目标目录放置的路径。

赞:

import shutil
import os
import tkinter as tk

source_dir = filedialog.askdirectory()
target_dir = filedialog.askdirectory()

file_names = os.listdir(source_dir)

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.testhi = tk.Button(self)
        self.testhi["text"] = "Move!"
        self.testhi["command"] = self.movefiles
        self.testhi.pack(side="top")

        self.quit = tk.Button(self, text="QUIT", fg="red",
                            command=self.master.destroy)
        self.quit.pack(side="bottom")


    def movefiles(self):
        for file_name in file_names:
            shutil.move(os.path.join(source_dir, file_name), target_dir) #for file_name in file_names:  #shutil.move(os.path.join(source_dir, file_name), target_dir)

root = tk.Tk()
app = Application(master=root)
app.mainloop()