Python - Copiar Dirección de carpeta seleccionada en caja de Texto

 
Vista:
Imágen de perfil de Heberto

Copiar Dirección de carpeta seleccionada en caja de Texto

Publicado por Heberto (6 intervenciones) el 30/11/2022 21:06:11
Buenas tardes,
Encontré un tutorial, para combinar archivos Pdf, pero este esta esclavo a una dirección fija de carpeta, le coloque una función con el modulo EasyGui, de abrir Carpeta, ya con esto tengo el directorio capturado.
intento colocar ese valor como ruta donde guardare el archivo resultante...

with open(directorio,'\pdfresultado.pdf', 'wb')as file:
merge.write(file)
merge.close()

Pero me envía un error: TypeError: 'str' object cannot be interpreted as an integer

Por lo que le adicione una caja de entrada y una variable caja = StringVar()

pero..
aun no logro colocar la dirección en la caja de entrada.
Segundo aun no aprendo a colocar esa dirección en el modulo de conversión con open...

Algún material para estudiar esto y resolverlo...???

Saludos a todos...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Copiar Dirección de carpeta seleccionada en caja de Texto

Publicado por antonio (65 intervenciones) el 01/12/2022 11:42:49
Hola buenas el fallo es porque no se inicializa el directorio correctamente por lo que es mejor coger el directorio cuando lo vas a unir sin botón de intermedio y hay otro fallo después de probarlo al dejar la ventana abierta el merge hay que volver a inicializarlo cada vez que quieras unir pdfs por lo que debes hacer una función que inicialice el merge siempre e introduzca los pdfs este seria el codigo resultante:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import tkinter as tk
import tkinter.ttk as ttk
import os
import subprocess
import PyPDF2
import easygui as eg
# ----------------------------------------------------------
from tkinter.filedialog import askopenfilenames
from PyPDF2 import PdfFileMerger
from pathlib import Path
from tkinter import *
from tkinter import messagebox
from tkinter.messagebox import *
#----------------- extension para imagenes -----------------
from PIL import ImageTk, Image
from PIL import ImageChops, ImageEnhance, ImageOps
 
# Ventana de login - tamaño
ventana = tk.Tk()
ventana.resizable(False,False) # boton de maximizar anulado
#ventana.iconbitmap("Sqlite/PDV/IMG/icono.ico") #Cambiar el icono
ventana.config(bg="black") #Cambiar color de fondo
ventana.title("Unir Archivos Pdf") # titulo de la ventana
ventana.eval('tk::PlaceWindow . center') # centramos formulario en el centro
#ventana_login.attributes('-alpha',0.90)
 
padd=20
ventana['padx']=padd
ventana_height = 400 # largo del formulario
ventana_width = 400   # ancho del formilario
screen_width = ventana.winfo_screenwidth()
screen_height = ventana.winfo_screenheight()
x_cordinate = int((screen_width/2) - (ventana_width/2))
y_cordinate = int((screen_height/2) - (ventana_height/2))
ventana.geometry("{}x{}+{}+{}".format(ventana_width, ventana_height, x_cordinate, y_cordinate))
 
pdfs = []
 
archivo = []
directorio = StringVar()
caja = StringVar()
 
def convertir():
 
    if(len(pdfs)>1):
        introducir()
        limpiar()
        messagebox.showinfo(message="Union Exitosa", title="Unir Pdfs")
    else:
        messagebox.showwarning(message="Selecciona al menos 2 archivos", title="Advertencia")
 
 
def seleccionar():
 
    tipoArchivo = (
        ('text files' , '*.pdf'),)
    archivo = askopenfilenames(filetypes=tipoArchivo)
    if(archivo != ''):
        for x in archivo:
            pdfs.append(x)
            nombreArchivo = os.path.basename(x)
            input_txt.insert('end' , nombreArchivo + '\n')
        messagebox.showinfo("Progrese Capital Consult", "Archivo(s) seleccionado(s)")
    else:
        messagebox.showwarning(message="No se selecciono ningun archivo", title="Atencion")
 
def limpiar():
    pdfs.clear()
    input_txt.delete(1.0,tk.END)
    directorio=""
    archivo.clear()
 
def introducir():
    merge = PdfFileMerger()
    for pdf in pdfs:
        merge.append(pdf)
 
    directorio =  direccion()+"\pdfresultado.pdf"
 
    merge.write(directorio)
    merge.close()
def direccion():
    directorio = eg.diropenbox("ubicacion de la carpeta", "w")
    return str(directorio)
 
input_txt = Text(ventana, height= 5,
                            width= 40)
 
 
input_txt.pack(pady=10)
 
 # Crear caja de texto.
caja = Text(ventana, width= 40, height = 1)
# Posicionarla en la ventana.
caja.place(x=20, y=100)
 
btnSeleccionar = Button(text="Seleccionar", command=seleccionar, height = 1, width = 10)
btnSeleccionar.place(x=40,y=170)
 
 
btnUnir = Button(text="Unir Pdfs", command=convertir, height = 1, width = 10)
btnUnir.place(x=40,y=220)
 
btnLimpiar = Button(text="Clear", command=limpiar, height = 1, width = 10)
btnLimpiar.place(x=40,y=270)
 
 
 
 
ventana.mainloop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Heberto

Copiar Dirección de carpeta seleccionada en caja de Texto

Publicado por Heberto (6 intervenciones) el 01/12/2022 15:15:15
Buenos días,

Gracias por tu ayuda, revisando el código, es bastante sensato, dividir el modulo en varias instancias y así poder ver mejor la situación..
Exageradamente bien...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar