it does not sho any menu or button in the gui for changing the datatype please change this:  import tkinter as tk
from tksheet import Sheet, int_formatter, float_formatter, percentage_formatter, bool_formatter

class DemoApp(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title('tksheet Data Formatting Demo')
        self.geometry('800x600')

        # Sample data representing different data types as strings
        data = [
            ["123", "45.67", "89%", "True"],   # Row 0
            ["456", "78.90", "12%", "False"],  # Row 1
            ["789", "12.34", "34%", "Yes"],    # Row 2
            ["abc", "invalid", "not a percent", "No"],  # Invalid data
        ]

        # Create tksheet instance
        self.sheet = Sheet(self, data=data)
        self.sheet.enable_bindings("all")
        self.sheet.pack(expand=True, fill='both')

        # Set column headers
        self.sheet.headers([
            "Integer Column",
            "Float Column",
            "Percentage Column",
            "Boolean Column",
        ])

        # Apply default formatters
        self.apply_default_formatters()

        # Bind right-click event on the sheet
        self.sheet.bind("<Button-3>", self.right_click_event, add='+')

    def apply_default_formatters(self):
        # Apply integer formatter to column 0
        self.sheet.set_column_format(0, int_formatter())

        # Apply float formatter to column 1
        self.sheet.set_column_format(1, float_formatter())

        # Apply percentage formatter to column 2
        self.sheet.set_column_format(2, percentage_formatter())

        # Apply boolean formatter to column 3
        self.sheet.set_column_format(3, bool_formatter())

    def right_click_event(self, event):
        # Get the region where the click occurred
        region = self.sheet.identify(event.x, event.y)
        if region[0] == "column_header":
            col_index = region[1]
            # Show the format selection menu
            self.show_format_menu(event, col_index)

    def show_format_menu(self, event, col_index):
        # Create a popup menu
        menu = tk.Menu(self, tearoff=0)
        # Add format options
        menu.add_command(label="Format as Integer", command=lambda: self.format_column_as(col_index, 'int'))
        menu.add_command(label="Format as Float", command=lambda: self.format_column_as(col_index, 'float'))
        menu.add_command(label="Format as Percentage", command=lambda: self.format_column_as(col_index, 'percentage'))
        menu.add_command(label="Format as Boolean", command=lambda: self.format_column_as(col_index, 'bool'))
        menu.add_separator()
        menu.add_command(label="Remove Format", command=lambda: self.remove_column_format(col_index))
        # Display the menu at the cursor position
        menu.tk_popup(event.x_root, event.y_root)

    def format_column_as(self, col_index, format_type):
        # Apply the selected formatter to the column
        if format_type == 'int':
            formatter = int_formatter()
        elif format_type == 'float':
            formatter = float_formatter()
        elif format_type == 'percentage':
            formatter = percentage_formatter()
        elif format_type == 'bool':
            formatter = bool_formatter()
        else:
            formatter = None

        if formatter:
            self.sheet.set_column_format(col_index, formatter)
            # Optionally, update the header to reflect the format
            self.sheet.headers()[col_index] = f"{self.sheet.headers()[col_index].split(' ')[0]} ({format_type.capitalize()})"

        # Refresh the sheet to reflect changes
        self.sheet.redraw()

    def remove_column_format(self, col_index):
        # Remove the formatter from the column by setting it to None
        self.sheet.set_column_format(col_index, None)
        # Optionally, update the header to remove format info
        original_header = self.sheet.headers()[col_index].split(' ')[0]
        self.sheet.headers()[col_index] = original_header
        # Refresh the sheet to reflect changes
        self.sheet.redraw()

if __name__ == '__main__':
    app = DemoApp()
    app.mainloop()