Мгновенное копирование файла во время работы программы Tkinter - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть небольшая GUI Программа, которая должна получить только некоторые входные данные, чтобы использовать эти входные данные для вызова метода.

Поэтому у меня есть несколько объектов tk.Entry. Теперь моему методу, который я хочу выполнить, нужен файл с моего жесткого диска. Я хочу очистить это с ElementTree. (Я думаю, что файл должен находиться в том же каталоге, что и мой файл .py? Если нет, скажите, пожалуйста, как использовать файл по другому пути). Моя идея заключалась в том, чтобы скопировать этот файл в текущий путь к файлу, а затем использовать только простой вызов, чтобы получить доступ к этому файлу. Но когда я хочу скопировать этот файл, он копируется после закрытия программы, и это не должно произойти. Он должен немедленно скопировать файл, чтобы я мог работать с ним.

Есть ли способ обновить sh мои файлы или у вас есть другая идея?

Спасибо, и вот мой код :

from Modules import copy_file
import tkinter as tk


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

        for Frame in (StartPage, SuccessPage):
            page_name = Frame.__name__
            frame = Frame(parent=container, controller=self)
            self.frames[page_name] = frame
            frame.grid(row=0, column=0, sticky="nsew")
        self.show_frame("StartPage")

    # method to show frames
    def show_frame(self, page_name):
        frame = self.frames[page_name] #getting our frame from our frames list
        frame.tkraise() #raise it up to the front


class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        # Open File Button 
        self.button_open_file = ttk.Button(self, text = "Open File", command = self.get_file_directory).grid(row=5, column=0, sticky="WE")


    def get_file_directory(self):
        filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("all files","*.*"),("jpeg files","*.jpg")))
        copy_file(filename)


class SuccessPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
        # Open File Button 
        self.label = tk.Label(self, text =  "Lab").grid(row=0 column=0, sticky="WE")

if __name__ == '__main__':
    application = MainApplication().mainloop()



----------------------------------------------------------------------------------------------
Modules.py

from shutil import copy

def copy_file(src):
    destination_path = os.path.dirname(os.path.realpath(__file__))
    copy(src, destination_path)


...