1
Dear friends, good evening!
See if you can give me an idea, please!
Problem to be solved:
I created the TKINTER interface for my program. This interface was in a separate file from the code. I would like the 'Rename' button to make the program run.
The interface has two text boxes for the user to type the path of any two folders and a button 'Rename'.
I would like after the user typed in the respective fields, as soon as he clicked the button, the program ran.
Note: Gentlemen, just to inform that I can run the code by clicking on the 'Rename' button, when I put everything in the same '.py file'. What I want is to keep the code separate from the interface and, when clicking the button, run the code. Thank you.
#CÓDIGO DA INTERFACE
from tkinter import *
janela = Tk()
janela.title("Move&Renomeia")
janela["bg"] = "wheat"
janela.geometry('500x450+800+100')
#título da interface
rotulo = Label(janela,
font="Arial 16 bold",
text='Programa Move e Renomeia Arquivos',
bg="wheat")
rotulo.pack(side=TOP)
#rótulo da caixa de texto, campo endereço de origem
rotulo = Label(janela,
font="Arial 12 bold",
text='Pasta origem:',
bg="wheat")
rotulo.place(x=10, y=100)
#rótulo da caixa de texto, campo endereço de destino
rotulo = Label(janela,
font="Arial 12 bold",
text='Pasta destino:',
bg="wheat")
rotulo.place(x=10, y=150)
#Caixa de texto para colocar o caminho de origem
cxtexto1 = Entry(janela,
width=40,
font="Arial 12 bold")
cxtexto1.place(x=125, y=100)
#Caixa de texto para colocar o caminho de destino
cxtexto2 = Entry(janela,
width=40,
font="Arial 12 bold")
cxtexto2.place(x=125, y=150)
#Texto de orientação ao usuário
rotulo = Label(janela,
font="Arial 10",
text=' Como fazer:\n'
' 1) Crie duas pastas:\n'
' a) na primeira, coloque os arquivos a serem renomeados; \n'
' b) na segunda, crie um arquivo no bloco de notas e coloque os nomes; \n'
' 2) copie o endereço das pastas e cole no campo respectivo; \n'
' 3) INVERTA as barras do endereço e acrescente uma barra no final; ',
justify=LEFT,
bd=2,
relief=GROOVE,
bg="wheat")
rotulo.place(x=50, y=200)
#botão para renomear o arquivo
bt1 = Button(janela,
width=10,
text="Renomear",
font="Arial 12 bold",
command='AQUI VAI ENTRAR A CHAMADA A FUNÇÃO')
bt1.place(x=200, y=310)
janela.mainloop()
ABOVE, INTERFACE CODE
#BELOW CODE OF THE PROGRAM
Note: I know that the variables oldAdress and newAdress should receive objects 'Entry()' instead of 'Input'
import os
oldAdress = str(input('Digite a pasta de origem: ')) #pasta origem
newAdress = str(input('Digite a pasta de destino: ')) #pasta destino
#Encontra o arquivo dentro do diretório. Neste caso só haverá uma arquivo.
listaNewAdress = os.listdir(newAdress)
#junta caminho com arquivo para formar diretório completo
diretorioCompleto_new = newAdress + listaNewAdress[0]
#abre arquivo no diretório
listaNomes = open(diretorioCompleto_new)
# Encontra os arquivos dentro do diretório. Vários arquivos.
listaOldAdress = os.listdir(oldAdress)
#acha quantos arquivos há no diretório
lista_len = len(listaOldAdress)
x = 0
while x < lista_len:
#armazena nome de caa linha e retira o espaço de quebra de linha
nome = listaNomes.readline().rstrip().upper()
# junta caminho com arquivo para formar diretório completo
diretorioCompleto_old = oldAdress + listaOldAdress[x]
#Diretório de destino dos arquivos recebem o nome dos novos arquivos
diretorioCompleto_new = newAdress + nome + '.docx'
#move os arquivos, renomeando-os
os.rename(diretorioCompleto_old, diretorioCompleto_new)
x += 1
Thank you Willian Vieira. I will test and then comment. Thank you for your attention!!!
– Wilson Junior