Dear friends, good evening!
See if you can give me an idea, please!
Problem to solve:
I created the TKINTER interface for my program. This interface is in a separate file of the code. I would like the 'Rename' button to make the program run.
The interface has two textboxes for the user to enter the path of any two folders and a 'Rename' button.
I would like that after the user types in the respective fields, as soon as he clicks the button, the program executes.
Note: Gentlemen, just to inform you that I can run the code by clicking the 'Rename' button, when I put everything in the same 'file.py'. What I want is to keep the code separate from the interface and, when I click the button, execute 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
#ABAIX PROGRAM CODE
Note: I know that the oldAdress and newAdress variables should receive 'Entry ()' objects 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