Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- from tksheet import Sheet
- # How many rows to add per button press
- N = 100_000
- class Cell:
- __slots__ = ("value",)
- def __init__(self, value: int):
- self.value = value
- def __str__(self):
- return str(self.value)
- # Simulate getting some data from an SQL Query
- def get_rows():
- return [tuple(Cell(1+6*row+i) for i in range(6)) for row in range(N)]
- class App(Tk):
- def __init__(self):
- super().__init__()
- insert_rows = Button(self, text=f"Insert {N:,} rows", command=self.insert_rows)
- insert_rows.grid(row=0)
- self.sheet = self._make_sheet()
- self.sheet.grid(row=1)
- def _make_sheet(self):
- sheet = Sheet(self,
- show_x_scrollbar=False,
- total_columns=6,
- column_width=60
- )
- sheet.enable_bindings("single_select")
- sheet.extra_bindings("cell_select", self.on_cell_select)
- sheet.headers(["Index", "Order", "Artikel", "Kvalitet", "Format", "Antal"])
- return sheet
- def on_cell_select(self, event):
- cell: Cell = self.sheet.get_cell_data(event.row, event.column, return_copy=False)
- print(f"Changing cell at ({event.row}, {event.column}) from {cell.value} to {cell.value+1}")
- cell.value += 1
- self.sheet.redraw()
- def insert_rows(self):
- rows = get_rows()
- for row in rows:
- self.sheet.insert_row(row)
- self.sheet.redraw()
- if __name__ == "__main__":
- app = App()
- app.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment