前言
matplotlib绘制的波形图加入到tkinter中任意位置上。提示:以下是本篇文章正文内容,下面案例可供参考
一、说明
tkinter可以实现GUI的设计,但是往往需要在界面上加入一个位置可以由自己选择的波形图以显示实时的时域或者频域信息。 借助matplotlib函数完成这一部分工作,具体可以分为:波形图的表达
选择tkinter的位置
画布
二、使用步骤
1.引入库
代码如下(示例):
import xlrd
import xlwt
import matplotlib
from matplotlib import pyplot as plt
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
2.读入数据
代码如下(示例):
emcc = tk.Tk()
# 进入消息循环
emcc.title("AAAAAA")
emcc.geometry("1000x800")
ig = Figure(figsize=(2,2))
'''
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
'''
a = fig.add_subplot(111) # 添加子图:1行1列第1个
def readexcel_x():
workbook = xlrd.open_workbook(r'E:\pythonProject\Trapezoidal_wave.xlsx')
booksheet = workbook.sheets()[0]
x = booksheet.col_values(0,1)#取第1行第1列
y = booksheet.col_values(1,1)
return x
def readexcel_y():
workbook = xlrd.open_workbook(r'E:\pythonProject\Trapezoidal_wave.xlsx')
booksheet = workbook.sheets()[0]
x = booksheet.col_values(0,1)#取第1行第1列
y = booksheet.col_values(1,1)
return y
osc_plot=a.plot(readexcel_x(),readexcel_y())
osc=Canvas(emcc,cursor='cross',
height=50,
width=50)
osc.place(x=200,y=200)
canvas = FigureCanvasTkAgg(fig, master=emcc)
canvas.draw() # 注意show方法已经过时了,这里改用draw
canvas.get_tk_widget().pack(side=tk.TOP, # 上对齐
fill=tk.BOTH, # 填充方式
expand=tk.YES) # 随窗口大小调整而调整
toolbar = NavigationToolbar2Tk(canvas, emcc)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP, # get_tk_widget()得到的就是_tkcanvas
fill=tk.BOTH,
expand=tk.YES)
'''
line, = plt.plot(readexcel_x(),readexcel_y())
plt.show()
'''
emcc.mainloop()
这里调用的是本地文件
总结
提示:这里对文章进行总结:
FigureCanvasTkAgg是渲染器,他的的工作就是drawing。
NavigationToolbar2Tk可以看作是对工具的设置,也就是除了数据以外的控件
使用matplotlib在tkinter中完成波形显示,但是还没有进行波形位置的编写