前言
结合之前的内容,实现波形图在tkinter中的位置可以进行控制。
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用的控件
LabelFrame
以下是关于控件的说明
二、使用步骤
1.引入库
代码如下(示例):
import xlrd
import xlwt
import matplotlib
from matplotlib import pyplot as plt
import tkinter as tk #import tkinter class.have GUI class
#将Matplotlib绘制的图显示到Tkinter中
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure
from tkinter import *
2.读入数据
代码如下(示例):
emcc = tk.Tk()
# 进入消息循环
emcc.title("aaa")
emcc.geometry("1000x800")
frame_left = tk.LabelFrame(emcc, text="波形图",labelanchor="n")
frame_left.place(x=100,y=400, relwidth=0.8,relheight=0.4)
fig = 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())
canvas = FigureCanvasTkAgg(fig, master=frame_left)
canvas.draw() # 注意show方法已经过时了,这里改用draw
canvas.get_tk_widget().pack(side=tk.TOP, # 上对齐
fill=tk.BOTH, # 填充方式
expand=tk.YES) # 随窗口大小调整而调整
toolbar = NavigationToolbar2Tk(canvas, frame_left)
toolbar.update()
canvas._tkcanvas.pack(side=tk.TOP, # get_tk_widget()得到的就是_tkcanvas
fill=tk.BOTH,
expand=tk.YES)
emcc.mainloop()
在原本的基础上进行tkinter中位置的控制
总结
以下是运行结果。