#python #datetime #tkinter #filedialog
Вопрос:
Этот код в основном представляет собой графический интерфейс, который открывается и заставляет вас выбрать исходную папку на вашем компьютере и папку назначения, и как только вы нажмете папку «Переместить файлы», он переместит файлы в зависимости от типа файла, который в данном случае направлен в». txt » и был ли он изменен за последние 24 часа. Я не получаю ошибок, но файлы не перемещаются. Я считаю, что это как-то связано с временными переменными StringVar (), и мои функции не могут их получить .get (). Хотел бы получить некоторую помощь, чтобы это сработало! Спасибо
import os from tkinter import * import tkinter as tk from tkinter import filedialog as fd import datetime import time import glob import shutil class ParentWindow(Frame): def __init__(self,master, *args, **kargs): Frame.__init__(self) secondsinday=24*60*60 #basic variables necessary for app to work pattern = ".txt" now=time.time() before = now - secondsinday src = StringVar() dest = StringVar() def chooseSource(self): src=fd.askdirectory() self.txtEntry.delete(0,END) self.txtEntry.insert(END,src) return src def chooseDest(self): dest = fd.askdirectory() self.txtEntry1.delete(0,END) self.txtEntry1.insert(END,dest) return dest def fileMove(self): files=glob.glob(src.get() pattern) ###code concern here for i in files: try: mtime=os.path.getmtime(i) except OSError: mtime=0 lastmodifieddate=datetime.datetime.fromtimestamp(mtime) lmd=lastmodifieddate.timestamp() if lmd lt; now and lmd gt; before: file_name=os.path.basename(i) shutil.move(i,dest.get() file_name) #code concern here self.master = master self.master.resizable(width=False, height=False) self.master.geometry('{}x{}'.format(450,175)) #making app box self.master.title('Move files') self.txtEntry = tk.Entry(self.master,width=30,font=("Arial",12),textvariable=src) self.txtEntry.grid(row=1,column=2,columnspan=4,padx=10,pady=(20,10)) self.txtEntry1 = tk.Entry(self.master,width=30,font=("Arial",12),textvariable=dest) self.txtEntry1.grid(row=2,column=2,columnspan=4,padx=10,pady=(20,10)) self.btnSource = tk.Button(self.master,width=15,height=1,text='Choose Source',command=lambda:chooseSource(self)) self.btnSource.grid(row=1,column=1,padx=10,pady=(20,10)) self.btnDest = tk.Button(self.master,width=15,height=1,text='Choose Destination',command=lambda:chooseDest(self)) self.btnDest.grid(row=2,column=1,padx=10,pady=(20,10)) self.btnMove = tk.Button(self.master,width=15,height=1,text='Move Files',command=lambda:fileMove(self)) self.btnMove.grid(row=3,column=5,padx=10,pady=(20,10),sticky=SE) if __name__ == "__main__": root = Tk() #connects Tk to root variable for next line to use App = ParentWindow(root) root.mainloop #keeps tab open, if this is not here it will pop up and disappear
Комментарии:
1. Что ты сделал с этим d3bug? Вы проверили, что ваши переменные содержат то, что вы предполагаете, что они содержат? Вы проверили
src.get()
, что это возвращает то, что должно быть? Вы убедились, чтоglob.glob
это возвращает то, что вы ожидаете?