Выбор каталога с помощью кнопки обзор

#python #python-3.x #directory #path

#python #python-3.x #каталог #путь

Вопрос:

Я работаю над простой программой переименования, но я сталкиваюсь с двумя проблемами:

  1. если я добавлю новую кнопку «Обзор» для выбора папки, я получу некоторые ошибки.

  2. если я запускаю программу, окно выбора папки отображается автоматически, но я хочу запускать его каждый раз, когда нажимаю на кнопку.

Проблема в том, что я могу создать кнопку, и она также может просматривать и выбирать папки, но как я могу привязать ее к своему рабочему пути без получения ошибок? Я предполагаю, что есть некоторые проблемы с

 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 всплывать только при нажатии кнопки.

Если возникнут какие-либо сомнения или ошибки, дайте мне знать

Приветствия