#python #python-3.x #directory #path
#python #python-3.x #каталог #путь
Вопрос:
Я работаю над простой программой переименования, но я сталкиваюсь с двумя проблемами:
-
если я добавлю новую кнопку «Обзор» для выбора папки, я получу некоторые ошибки.
-
если я запускаю программу, окно выбора папки отображается автоматически, но я хочу запускать его каждый раз, когда нажимаю на кнопку.
Проблема в том, что я могу создать кнопку, и она также может просматривать и выбирать папки, но как я могу привязать ее к своему рабочему пути без получения ошибок? Я предполагаю, что есть некоторые проблемы с
list = os.listdir(path)
os.chdir(path)
полный код :
import os
from tkinter import *
#from PIL import ImageTk,Image
from tkinter import filedialog
window = Tk()
window.title("Rename Helper")
window.geometry("500x302")
window.resizable(width = False , height = False)
#window.iconbitmap('licon.ico')
#canvas = Canvas(window)
#image = ImageTk.PhotoImage(Image.open('Rename.png'))
#canvas.create_image(0, 0, anchor=NW, image=image)
#canvas.place( height=500, width=500)
hl_text = StringVar()
e1 = Entry(window, textvariable=hl_text)
e1.place(height=22, width=100, x= 280, y=140)
d_text = StringVar()
e2 = Entry(window, textvariable=d_text)
e2.place(height=22, width=100, x= 280, y=192)
fileExt = (".png", ".jpg", ".jpeg", ".PNG", "JPG", ".JPEG")
def rename(path, new_name, numbering, d_text, extension,):
list = os.listdir(path)
os.chdir(path)
count = numbering
for i in list:
if i.endswith(fileExt):
os.rename(i, new_name "_P_" str(count).zfill(2) "_" d_text '.' extension)
count = 1
path = filedialog.askdirectory()
def renamebtn():
newname = hl_text.get()
newdate = d_text.get()
rename(path, newname, 1, newdate, "jpg")
btn1 = Button(window, text="Rename", command=renamebtn)
btn1.place(height=50, width=200, x= 280, y=235)
window.mainloop()
Комментарии:
1. Также включите код ошибки
2. Опубликованный вами код не содержит кнопки «Обзор».
Ответ №1:
Причина, по которой он запускается автоматически, заключается в том, что вы вызываете функцию (используя ()
), чтобы исправить это, просто назначьте кнопку, как вы бы делали с обычными функциями, и поместите path внутри нее. Нравится:
btn2 = Button(window,text='Choose',command=choose)
btn2.pack() # or even place, depending on what you used previously
Тогда функция будет выглядеть:
def choose():
global path
path = filedialog.askdirectory()
Это заставило бы filedialog
всплывать только при нажатии кнопки.
Если возникнут какие-либо сомнения или ошибки, дайте мне знать
Приветствия