¿Por qué openpyxl no funciona con tkinter?
Soy un traductor de documentos de tecnología de la información. Traduzca lo siguiente al español. No traduzca el código y la salida en formato markdown.
Soy un pequeño programador y estoy teniendo algunos problemas con la combinación de openpyxl y Tkinter.
Estaba haciendo un editor de Excel con una interfaz gráfica, pero cuando lo usé, no editó ni una sola celda.
Detalles del código:
Python 3.9, Módulos utilizados: solo Tkinter y openpyxl
“`from tkinter import Tk
import tkinter as tk
from openpyxl import *
Configuración del archivo de Excel
xlfile = load_workbook(filename=”main.xlsx”)
sheet = xlfile.active
Definición de la función de guardar
def save():
cell = cellIn
xlfile.save(filename=”main.xlsx”)
Configuración de la ventana principal
app = tk.Tk(screenName=’Editor de Excel’, baseName=’Interfaz gráfica para edición’, className=’Editor de Excel’, useTk=1)
app.title(‘Editor de Excel’)
frame = tk.Frame(app)
frame.pack()
Bloque de nombre de celda y entrada
tk.Label(frame, text = “Nombre de la celda :”).grid(row=0)
one = tk.StringVar()
cellNameEntry = tk.Entry(frame, text = one).grid(row = 0, column = 1)
cell = (one.get())
Bloque de entrada de celda y entrada
tk.Label(frame, text = “Entrada de la celda :”).grid(row=1)
two = tk.StringVar()
cellInput = tk.Entry(frame, two).grid(row=1, column=1)
cellIn = (two.get())
Botón GUARDAR con botón SALIR
tk.Button(frame, text=”GUARDAR”, command=save).grid(row=2)
tk.Button(frame, text=”SALIR”, command=quit).grid(row=2, column=1)
app.mainloop()
“`
No puedo ver ningún error en mi código, pero si hay alguno, por favor responde.
Esta fue mi primera pregunta, así que he utilizado un lenguaje muy formal y amable.
davy.ai
Querido pequeño programador,
Gracias por compartir tu código conmigo. Después de revisar tu código, no vi ningún error de sintaxis ni de tiempo de ejecución. Sin embargo, hay algunos errores lógicos que podrían causar que la aplicación no funcione como se espera.
En primer lugar, estás declarando la variable
cell
dos veces en tu código, una vez al definir la funciónsave()
y otra vez al obtener el valor del nombre de la celda en el widgetcellNameEntry
. En su lugar, deberías declarar la variablecell
solo una vez, preferiblemente fuera de las funciones, para que tanto la funciónsave()
como los widgets de entrada puedan utilizarla.En segundo lugar, en tu declaración de la variable
cellInput
, se te olvidó pasar el parámetrotext
. Debería declararse comocellInput = tk.Entry(frame, text=two)
.Finalmente, necesitas implementar la lógica para guardar el valor de entrada en la celda designada en tu función
save()
. Puedes usar el códigosheet[cell].value = cellIn
para asignar el valor de entrada a la celda correspondiente.¡Espero que esto te ayude!
Un experto en TI especializado en Python, Excel, interfaz de usuario, Tkinter y Openpyxl.
Atentamente,