CustomTkinter icon indicating copy to clipboard operation
CustomTkinter copied to clipboard

CTkTable dimensions when used inside a ScrollableFrame

Open TrinitySolver opened this issue 10 months ago • 1 comments

Hi,

I have a CTkTable in a CTkScrollableFrame which is in a CTkTabview but I meet several issues. Here is a simpler version of my code, with all the problems, the default size of the window is the one I will keep in the future (I did not fix it here to show some problems) :

import customtkinter
from CTkTable import *

root = customtkinter.CTk()
root.geometry("400x200")
row_nums = []
deleted_values = []

tabview = customtkinter.CTkTabview(root, height=100)
tabview.grid(row=0, column=0, padx=(5, 5), sticky="new")
tabview.add("A")
tabview.add("B")
tabview.add("C")
tabview.tab("A").grid_columnconfigure(0, weight=1)

tabA_scrol = customtkinter.CTkScrollableFrame(tabview.tab("A"))
tabA_scrol.grid(row=0, column=0, sticky="new")

def show(cell):
    if cell["row"] not in row_nums:
        table.select_row(cell["row"])
        row_nums.append(cell["row"])
        deleted_values.append(table.get_row(cell["row"]))
    else:
        table.deselect_row(cell["row"])
        row_nums.remove(cell["row"])
        deleted_values.remove(table.get_row(cell["row"]))


def delete():
    global row_nums
    if len(row_nums) == 0:
        return
    else:
        table.delete_rows(row_nums)
        row_nums = []
    print(deleted_values)


value = [["A", "B", "C", "D", "E"], [1, 2, 3, 4, 5], [0, 0, 0, 0, 0], [1, 2, 0, 0, 0], [3, 4, 5, 6, 7], [4, 2, 3, 4, 5], [5, 0, 0, 0, 0], [6, 2, 0, 0, 0], [7, 2, 3, 4, 5]]

table = CTkTable(tabA_scrol, column=5, values=value, command=show, header_color="green")
table.grid(row=1, column=0)

btn = customtkinter.CTkButton(root, text='Delete', width=150, command=delete)
btn.grid(row=2, column=0)
root.mainloop()

First one : I don't know how to modify the Table/ScrollableFrame height to fit this window size, I tried putting "height = ..." everywhere but it never changes it and I always end up with the button hidden below.

Second one : The width of the table change when I put it directly inside the window, based on the window size, but once I put it inside a ScrollableFrame, everything is messed up.

Third one : This may just be a feature that doesn't exist but when I scroll down the table, the header end up disappearing as I scroll down, is there a way like freeze in excel to always keep the header visible on top even when scrolling ?

TrinitySolver avatar Dec 08 '24 12:12 TrinitySolver