1.mp4
| 特性 | 描述 |
|---|---|
| ⚡ 实时更新 | 持续流式显示实时数据 |
| 📉 多条折线 | 在同一图表中绘制多条线,便于对比 |
| 🎨 颜色自定义 | 根据应用程序设计自定义颜色 |
| 🌓 动态主题 | 支持亮色与暗色主题之间的动态颜色切换 |
| 🔤 字体自定义 | 调整文字字体以提高可读性 |
| 📐 尺寸控制 | 调整图表大小以适应任何布局 |
| 🎛️ 细粒度配置 | 通过 configure_*() 方法精确控制(v2.2.0+) |
pip install ctkchartimport ctkchartimport customtkinter as ctk
import ctkchart
import random
import threading
import time
root = ctk.CTk()
# 1. 创建图表
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. 创建折线
line = ctkchart.CTkLine(master=chart)
# 3. 在后台线程中持续推送数据
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
查看代码
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
查看代码
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
查看代码
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
查看代码
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
查看代码
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()对于 ctkchart 中涉及颜色的每个参数,有两种写法:
- 代表颜色的单个字符串。
- 两个字符串的元组,其中第一个字符串表示浅色主题的颜色,第二个字符串表示深色主题的颜色。
6.mp4
探索所有参数、配置方法和高级用法: