Как заполнить данные фрейма данных в записи сетки tkinterPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как заполнить данные фрейма данных в записи сетки tkinter

Сообщение Anonymous »

Я хотел бы поделиться своим кодом, который заносит данные тестирования в запись сетки. Однако мне нужна помощь в использовании моих данных DataFrame для этой цели. Моя текущая реализация, которая использует исходный DataFrame для заполнения записи сетки, сталкивается с ошибкой. Как я могу эффективно использовать данные DataFrame в записи сетки?
import tkinter as tk
import pandas as pd
#import tkinter

class ResizableGrid(tk.Frame):
def __init__(self, parent, rows, columns, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)

self.rows = rows
self.columns = columns

self.entry_grid = [[tk.Entry(self) for _ in range(columns)] for _ in range(rows)]
self.configure_grid() # it give error

self.bind_mouse()

def configure_grid(self):
df = pd.read_excel('c:/erp/book11.xlsx',header=None)
#for i, row in df.iterrows(): # run ok
# c = 0
#for cell in row:
# tk.Label(root, text=cell).grid(row=i, column=c) # run ok fill my df data into lable
# c += 1

#for i in range(self.rows):
for i, row in df.iterrows():
# for j in range(self.columns): 3 it run gine with out error with testing data
j = 0
for cell in row: # it give the error
self.entry_grid[j].grid(row=i, column=j, sticky="nsew", padx=1, pady=1) # it give error when use dataframe
#self.entry_grid[j].insert(0, 'testing') # it run fine
self.entry_grid[j].insert(0, cell) # it give error
if i==3 and j==0:self.entry_grid[j].config(bg = "green")
#if i==3 and j==0:self.entry_grid[j].config(bg = "green",width=100)
self.entry_grid[j].bind("", lambda event, col=j: self.on_enter(event, col))
j += 1

for i in range(self.rows):
self.grid_rowconfigure(i, weight=1)

for j in range(self.columns):
self.grid_columnconfigure(j, weight=1)

def bind_mouse(self):
self.bind("", self.on_motion)
self.bind("", self.on_release)

def on_enter(self, event, col):
self.current_column = col

def on_motion(self, event):
if hasattr(self, "current_column"):
col = self.current_column
width = event.x - self.entry_grid[0][col].winfo_x()
self.columnconfigure(col, minsize=max(50, width))

def on_release(self, event):
if hasattr(self, "current_column"):
delattr(self, "current_column")

if __name__ == "__main__":
root = tk.Tk()
root.title("Resizable Grid")

rows = 5
columns = 8

grid = ResizableGrid(root, rows, columns)
grid.pack(expand=True, fill="both")

#button5= tk.Button(root, text="Muhammad")
#button5.grid(row=2,column=2)
root.mainloop()

File "c:\mainfol\mfatt\11024gridcolumnriszing.py", line 13, in __init__
self.configure_grid() # it give error
^^^^^^^^^^^^^^^^^^^^^
File "c:\mainfol\mfatt\11024gridcolumnriszing.py", line 32, in configure_grid
self.entry_grid[j].grid(row=i, column=j, sticky="nsew", padx=1, pady=1) # it give error when use dataframe
~~~~~~~~~~~~~~~~~~^^^
IndexError: list index out of range


Подробнее здесь: https://stackoverflow.com/questions/790 ... ry-tkinter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»