En este artículo, discutiremos cómo mostrar un editor de tablas en un widget de texto.
Antes de continuar, creemos primero un widget de texto simple con la ayuda de Tkinter. Para obtener el enlace al archivo de Excel utilizado en el código, haga clic aquí .
Widget de texto
El widget de texto se usa para mostrar el editor de texto en la ventana de Tkinter. Un usuario puede modificar el texto en el editor de texto.
Python3
# Import tkinter from tkinter import * # Create an instance of tkinter window window = Tk() # Size of the tkinter window window.geometry("200x200") # Create text widget text = Text(window, width=15, height=2) # insert text into the text field text.insert(INSERT, "Hello world!") # Set the position of the widget text.grid(row = 0,column = 0) window.mainloop()
Producción:
Ejemplo 1:
En este ejemplo, estamos cargando datos tabulares de filas y columnas e iterando a través del número de filas y columnas. Después de eso, el texto se inserta en el widget de texto y se muestra la tabla de datos.
Python3
# import required modules from tkinter import * import pandas as pd # Create an instance of tkinter frame window = Tk() # Set the size of the tkinter window window.geometry("300x200") # Load data from source df = pd.read_excel("data.xlsx") # Extract number of rows and columns n_rows = df.shape[0] n_cols = df.shape[1] # Extracting columns from the data and # creating text widget with some # background color column_names = df.columns i=0 for j, col in enumerate(column_names): text = Text(window, width=16, height=1, bg = "#9BC2E6") text.grid(row=i,column=j) text.insert(INSERT, col) # adding all the other rows into the grid for i in range(n_rows): for j in range(n_cols): text = Text(window, width=16, height=1) text.grid(row=i+1,column=j) text.insert(INSERT, df.loc[i][j]) window.mainloop()
Producción:
Ejemplo 2:
Usemos los mismos datos y modificaremos el país UK a Reino Unido y guardaremos los new_data en formato excel.
Python3
# import required modules from tkinter import * import pandas as pd # Create an instance of tkinter frame window = Tk() # Set the size of the tkinter window window.geometry("300x200") # Load data from source df = pd.read_excel("data.xlsx") # Extract number of rows and columns n_rows = df.shape[0] n_cols = df.shape[1] # Extracting columns from the data and #creating text widget with some # background color column_names = df.columns i=0 for j, col in enumerate(column_names): text = Text(window, width=16, height=1, bg = "#9BC2E6") text.grid(row=i,column=j) text.insert(INSERT, col) # Dictionary for storing the text widget # references cells = {} # adding all the other rows into the grid for i in range(n_rows): for j in range(n_cols): text = Text(window, width=16, height=1) text.grid(row=i+1,column=j) text.insert(INSERT, df.loc[i][j]) cells[(i,j)] = text def do_something(): """ When user clicks the "Save" button, modified data will be saved in excel file """ for i in range(n_rows): for j in range(n_cols): if df.loc[i][j] != cells[(i,j)].get("1.0", "end-1c"): df.loc[[i],column_names[j]] = cells[(i,j)].get("1.0", "end-1c") df.to_excel("new_data.xlsx") save_button = Button( window, height = 2, width = 16, text ="Save", command = lambda:do_something()) save_button.grid(row=7,column = 0) window.mainloop()
Producción:
Haga clic en el botón Guardar. Al hacer clic en el botón Guardar se creará un “nuevo_dato.xlsx” con los datos modificados en el mismo directorio.
Publicación traducida automáticamente
Artículo escrito por sandeepburra y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA