CTkTabview
The CTkTabview creates a tabview, similar to a notebook in tkinter. The tabs, which are created with .add("<tab-name>") are CTkFrames and can be used like CTkFrames. Any widgets can be placed on them.
Example Code
Example without using classes:
tabview = customtkinter.CTkTabview(master=app)
tabview.pack(padx=20, pady=20)
tabview.add("tab 1") # add tab at the end
tabview.add("tab 2") # add tab at the end
tabview.set("tab 2") # set currently visible tab
button = customtkinter.CTkButton(master=tabview.tab("tab 1"))
button.pack(padx=20, pady=20)
It's also possible to save tabs in extra variables:
tab_1 = tabview.add("tab 1")
tab_2 = tabview.add("tab 2")
button = customtkinter.CTkButton(tab_1)
Example with classes:
class MyTabView(customtkinter.CTkTabview):
def __init__(self, master, **kwargs):
super().__init__(master, **kwargs)
# create tabs
self.add("tab 1")
self.add("tab 2")
# add widgets on tabs
self.label = customtkinter.CTkLabel(master=self.tab("tab 1"))
self.label.grid(row=0, column=0, padx=20, pady=10)
class App(customtkinter.CTk):
def __init__(self):
super().__init__()
self.tab_view = MyTabView(master=self)
self.tab_view.grid(row=0, column=0, padx=20, pady=20)
app = App()
app.mainloop()
A complete example is the tutorial Settings Window with CTkTabview.
Arguments
| argument | value |
|---|---|
| master | root, frame, top-level |
| width | width in px, tabs will be slightly smaller |
| height | height in px, tabs will be slightly smaller |
| corner_radius | corner radius in px |
| border_width | border width in px |
| bg_color | color behind the widget, only visible at the rounded corners, "transparent" (default) takes the color of the parent widget, tuple: (light_color, dark_color) or single color |
| fg_color | foreground color of the tabview itself and the tabs, tuple: (light_color, dark_color) or single color |
| border_color | border color, tuple: (light_color, dark_color) or single color |
| segmented_button_fg_color | foreground color of segmented button, tuple: (light_color, dark_color) or single color |
| segmented_button_selected_color | selected color of segmented button, tuple: (light_color, dark_color) or single color |
| segmented_button_selected_hover_color | selected hover color of segmented button, tuple: (light_color, dark_color) or single color |
| segmented_button_unselected_color | unselected color of segmented button, tuple: (light_color, dark_color) or single color |
| segmented_button_unselected_hover_color | unselected hover color of segmented button, tuple: (light_color, dark_color) or single color |
| segmented_button_font | font of the tab names, tuple: (font_name, size) or CTkFont (new in 6.0) |
| text_color | text color of segmented button, tuple: (light_color, dark_color) or single color |
| text_color_disabled | text color of segmented buttons when widget is disabled, tuple: (light_color, dark_color) or single color |
| command | function will be called when segmented button is clicked |
| anchor | position of the segmneted button, default is "n", values are "nw", "n", "ne", "sw", "s", "se" |
| state | "normal" or "disabled" |
Arguments and methods that all widgets share, like bg_color, .bind(), .focus() or .destroy(), are described on Common arguments and methods.
Methods
-
.configure(attribute=value, ...)
All attributes can be configured and updated.
-
.cget(attribute_name)
Get values of all attributes specified as string.
-
.tab(name)
Returns reference to tab with given name. Can be used like a frame like this:
button = customtkinter.CTkButton(master=tabview.tab("tab name")) -
.insert(index, name)
Insert tab with name at position of index, name must be unique.
-
.add(name)
Add tab with name at the end, name must be unique.
-
.index(name=None)
Returns the position of the tab with the given name, or of the visible tab if no name is passed. Raises
ValueErrorif there is no such tab. -
.move(new_index, name)
Move tab with name to given index.
-
.rename(old_name, new_name)
Rename tab.
-
.delete(name)
Delete tab with name.
-
.set(name)
Set tab with name to be visible.
-
.get(index=None)
Returns the name of the visible tab, or an empty string if there is none. If an index is passed, returns the name of the tab at that position (index is new in 6.0).
-
.len()
Returns the number of tabs. (new in 6.0)
-
.winfo_children()
Returns all child widgets of the tabview, without the internal canvas and segmented button.