файлы через модуль filedialog не будут перемещаться через графический интерфейс Tkinter

#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 это возвращает то, что вы ожидаете?