es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , , ,

Answer

  1. Avatar for 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ón save() y otra vez al obtener el valor del nombre de la celda en el widget cellNameEntry. En su lugar, deberías declarar la variable cell solo una vez, preferiblemente fuera de las funciones, para que tanto la función save() como los widgets de entrada puedan utilizarla.

    En segundo lugar, en tu declaración de la variable cellInput, se te olvidó pasar el parámetro text. Debería declararse como cellInput = 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ódigo sheet[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,

Comments are closed.