🎥 Watch the Main Demo Video on GitHub
✨ Features
| 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 |
| 🔤 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+) |
📦 Installation
pip install tkchart
import tkchart
🚀 Quick Start
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
# 1. Create the chart
chart = tkchart.LineChart(
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 = tkchart.Line(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()
🎬 Live Examples
1 — Simple
▶️ View Simple Demo Video on GitHub
View code
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
root.configure(bg="#0d1117")
root.geometry("720x430+200+200")
line_chart = tkchart.LineChart(
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 = tkchart.Line(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 — Styled & Filled Line
▶️ View Styled & Filled Line Demo Video on GitHub
View code
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
root.configure(bg="#0d1117")
root.geometry("720x430+200+200")
line_chart = tkchart.LineChart(
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 = tkchart.Line(
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 — 2 Lines with Different Styles
▶️ View 2 Lines Demo Video on GitHub
View code
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
root.configure(bg="#0d1117")
root.geometry("720x430+200+200")
line_chart = tkchart.LineChart(
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 = tkchart.Line(
master=line_chart,
color="#5dffb6",
size=2,
style="dashed",
style_type=(10, 5),
)
line2 = tkchart.Line(
master=line_chart,
color="#FFBAD2",
size=2,
point_highlight="enabled",
point_highlight_color="#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 — 3 Lines with Different Styles
▶️ View 3 Lines Demo Video on GitHub
View code
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
root.configure(bg="#0d1117")
root.geometry("720x430+200+200")
line_chart = tkchart.LineChart(
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 = tkchart.Line(master=line_chart, size=2, fill="enabled")
line2 = tkchart.Line(
master=line_chart,
color="#5dffb6",
size=2,
style="dashed",
style_type=(10, 5),
)
line3 = tkchart.Line(
master=line_chart,
color="#FFBAD2",
size=2,
point_highlight="enabled",
point_highlight_color="#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 — With Grid Sections
▶️ View Grid Sections Demo Video on GitHub
View code
import tkinter as tk
import tkchart
import random
import threading
import time
root = tk.Tk()
root.configure(bg="#0d1117")
root.geometry("720x430+200+200")
line_chart = tkchart.LineChart(
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 = tkchart.Line(
master=line_chart,
color="#5dffb6",
size=2,
style="dashed",
style_type=(10, 5),
)
line2 = tkchart.Line(
master=line_chart,
color="#FFBAD2",
size=2,
point_highlight="enabled",
point_highlight_color="#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()
📚 Documentation
Explore all parameters, configuration methods, and advanced usage:
👥 Contributors
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tkchart-2.2.1.tar.gz
(35.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
tkchart-2.2.1-py3-none-any.whl
(31.7 kB
view details)
File details
Details for the file tkchart-2.2.1.tar.gz.
File metadata
- Download URL: tkchart-2.2.1.tar.gz
- Upload date:
- Size: 35.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3085023e5244480cbf6321a4752714d7ac9c69ca1658fbd21aecbbf2d8ab3c4b
|
|
| MD5 |
797f0a3c48c771d03d4ed313993d6776
|
|
| BLAKE2b-256 |
7d90bb9bf7e856a6ae972031774fe25aaa31be44631b454abc1db88d2900fcdc
|
File details
Details for the file tkchart-2.2.1-py3-none-any.whl.
File metadata
- Download URL: tkchart-2.2.1-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f4f37373d13d920726847de2569d1e2ca32e895d50660f599c8f4deea3bde5f
|
|
| MD5 |
a89864002ad220f7d41829a8f8f4bac1
|
|
| BLAKE2b-256 |
562d020e793fe723d29de1e2b1ec27344ba020d96777fa770e1fdc38f6ed6ea1
|