Chart.1.mp4
| Feature | Description |
|---|---|
| ⚡ Live Updates | Stream and display real-time data continuously |
| 📉 Multiple Lines | Plot several lines on the same chart for easy comparison |
| 🎨 Color Customization | Tailor colors to match your app's design |
| 🌓 Dynamic Theme | Dynamic color change for dark & light themes |
| 🔤 Font Customization | Adjust text fonts for better readability |
| 📐 Dimension Control | Resize charts to fit any layout |
| 🎛️ Granular Config | Fine-grained control via configure_*() methods (v2.2.0+) |
pip install ctkchartimport ctkchartimport customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
# 1. Create the chart
chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("a", "b", "c", "d", "e", "f"),
y_axis_values=(100, 900)
)
chart.place(x=10, y=10)
# 2. Create a line
line = ctkchart.CTkLine(master=chart)
# 3. Stream data in a background thread
def loop():
while True:
chart.show_data(line=line, data=[random.choice(range(100, 900))])
time.sleep(1)
threading.Thread(target=loop, daemon=True).start()
root.mainloop()1.mp4
View code
import customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
root.configure(fg_color="#0d1117")
root.geometry("720x430+200+200")
line_chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07", "01-08", "01-09", "01-10"),
y_axis_values=(0, 1000)
)
line_chart.pack(pady=15)
line = ctkchart.CTkLine(master=line_chart)
def display_data():
while True:
line_chart.show_data(line=line, data=[random.choice(range(0, 1000))])
time.sleep(0.5)
threading.Thread(target=display_data, daemon=True).start()
root.mainloop()2.mp4
View code
import customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
root.configure(fg_color="#0d1117")
root.geometry("720x430+200+200")
line_chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07", "01-08", "01-09", "01-10"),
y_axis_values=(0, 1000),
y_axis_label_count=10,
)
line_chart.pack(pady=15)
line = ctkchart.CTkLine(
master=line_chart,
size=2,
fill="enabled"
)
def display_data():
while True:
line_chart.show_data(line=line, data=[random.choice(range(0, 1000))])
time.sleep(0.5)
threading.Thread(target=display_data, daemon=True).start()
root.mainloop()3.mp4
View code
import customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
root.configure(fg_color=("#ffffff", "#0d1117"))
root.geometry("720x430+200+200")
line_chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07", "01-08", "01-09", "01-10"),
y_axis_values=(0, 1000),
y_axis_label_count=10,
)
line_chart.pack(pady=15)
line1 = ctkchart.CTkLine(
master=line_chart,
color=("#5dffb6", "#5dffb6"),
size=2,
style="dashed",
style_type=(10, 5),
)
line2 = ctkchart.CTkLine(
master=line_chart,
color=("#FFBAD2", "#FFBAD2"),
size=2,
point_highlight="enabled",
point_highlight_color=("#FFBAD2", "#FFBAD2"),
)
def display_data():
while True:
line_chart.show_data(line=line1, data=[random.choice(range(0, 1000))])
line_chart.show_data(line=line2, data=[random.choice(range(0, 1000))])
time.sleep(0.5)
threading.Thread(target=display_data, daemon=True).start()
root.mainloop()4.mp4
View code
import customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
root.configure(fg_color=("#ffffff", "#0d1117"))
root.geometry("720x430+200+200")
line_chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07", "01-08", "01-09", "01-10"),
y_axis_values=(0, 1000),
y_axis_label_count=10,
)
line_chart.pack(pady=15)
line1 = ctkchart.CTkLine(master=line_chart, size=2, fill="enabled")
line2 = ctkchart.CTkLine(
master=line_chart,
color=("#5dffb6", "#5dffb6"),
size=2,
style="dashed",
style_type=(10, 5),
)
line3 = ctkchart.CTkLine(
master=line_chart,
color=("#FFBAD2", "#FFBAD2"),
size=2,
point_highlight="enabled",
point_highlight_color=("#FFBAD2", "#FFBAD2"),
)
def display_data():
while True:
line_chart.show_data(line=line1, data=random.choices(range(0, 1000), k=1))
line_chart.show_data(line=line2, data=random.choices(range(0, 1000), k=1))
line_chart.show_data(line=line3, data=random.choices(range(0, 1000), k=1))
time.sleep(0.5)
threading.Thread(target=display_data, daemon=True).start()
root.mainloop()5.mp4
View code
import customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
root.configure(fg_color=("#ffffff", "#0d1117"))
root.geometry("720x430+200+200")
line_chart = ctkchart.CTkLineChart(
master=root,
x_axis_values=("01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07", "01-08", "01-09", "01-10"),
y_axis_values=(0, 1000),
y_axis_label_count=10,
y_axis_section_count=10,
x_axis_section_count=10,
)
line_chart.pack(pady=15)
line1 = ctkchart.CTkLine(
master=line_chart,
color=("#5dffb6", "#5dffb6"),
size=2,
style="dashed",
style_type=(10, 5),
)
line2 = ctkchart.CTkLine(
master=line_chart,
color=("#FFBAD2", "#FFBAD2"),
size=2,
point_highlight="enabled",
point_highlight_color=("#FFBAD2", "#FFBAD2"),
)
def display_data():
while True:
line_chart.show_data(line=line1, data=[random.choice(range(0, 1000))])
line_chart.show_data(line=line2, data=[random.choice(range(0, 1000))])
time.sleep(0.5)
threading.Thread(target=display_data, daemon=True).start()
root.mainloop()For every parameter that involves color in ctkchart, you can provide either:
- A single string representing the color.
- A tuple of two strings where the first string represents the color for the light theme and the second string represents the color for the dark theme.
6.mp4
Explore all parameters, configuration methods, and advanced usage: