tk_tools库内置了多种tkinter常用工具,其中的tk_tools.Graph类可以绘制快速刷新的图表。
安装
pip install tk_tools
使用
import tkinter as tk
import tk_tools
import random
import time
graph=root=None
n=1000
add_series_btn = None
running=False# 程序开始时不在运行。
def add_series():# 绘制曲线
global n
line_1 = [(1.0*x/n, x/n*random.random()) for x in range(n)]
graph.plot_line(line_1, point_visibility=True, color='blue')
def add_point():# 绘制散点
point = (0.5, 0.75)
graph.plot_point(*point, color='red')
def clear():# 清除
global graph
graph.draw_axes()
def task(root):
global running
if running == True:
t0 = time.time()
clear()
add_series()
t1 = time.time()
print('time used(s) for plotting 1000 dots:',t1-t0)
root.after(30,lambda:task(root))# 间隔一段时间后继续任务,间隔30ms。
def control():
global running
running = not running
if __name__ == '__main__':
root = tk.Tk()
graph = tk_tools.Graph(
parent=root,
x_min=0,# x最小值
x_max=1.0,# x最大值
y_min=0.0,# y最小值
y_max=2.0,# y最大值
x_tick=0.2,# x分度值
y_tick=0.2,# y分度值
width=500,# 绘图区域宽度(像素)
height=400# 绘图区域高度(像素)
)
graph.pack(expand=1,fill=tk.BOTH)
add_series_btn = tk.Button(root, text='start', command=control)
add_series_btn.pack()
task(root)
root.mainloop()
运行效果:
一共1000个散点。
界面如下。
控制台输出:
每次绘图的时间消耗都在0.02秒的样子——而且这只是1000个点。寻常绘图的时候一百个点就足够多了,此时仅用0.003秒左右就可以画完。
最后还是有几点需要注意:
1、这个库自身没有缩放坐标轴的功能,不能自动根据数据刷新画布;
2、自身不能缩放,相对还是不如PyQt上面的pyqtgraph。如果在tkinter上面有快速绘图需求,可以考虑使用这个库。