当前位置: 首页 > news >正文

毅冰做外贸是哪个网站广东seo加盟

毅冰做外贸是哪个网站,广东seo加盟,网站的风格指的是什么,网站开发现状文章目录 导入数据文件对话框修改绘图逻辑源代码 Python绘图系统系列:将matplotlib嵌入到tkinter 简单的绘图系统 导入数据 单纯从作图的角度来说,更多情况是已经有了一组数据,然后需要将其绘制。这组数据可能是txt格式的,也可能…

文章目录

    • 导入数据
    • 文件对话框
    • 修改绘图逻辑
    • 源代码

Python绘图系统系列:将matplotlib嵌入到tkinter 简单的绘图系统

导入数据

单纯从作图的角度来说,更多情况是已经有了一组数据,然后需要将其绘制。这组数据可能是txt格式的,也可能是csv格式的,还可能是二进制数据。当然,这些一会儿在想,首先就是要添加一个按钮,将setCtrlButtons函数添加一行:

def setCtrlButtons(self, frm):ttk.Button(frm, text="绘图",width=5,command=self.btnDrawImg).pack(side=tk.LEFT)ttk.Button(frm, text="加载",width=5,command=self.btnLoadData).pack(side=tk.LEFT)

然后就可以考虑self.btnLoadData函数了。

简洁起见,以后将不再具体展示setCtrlButtons的具体代码,而只是写出新增的代码。

文件对话框

加载数据,其实就是加载文件,那么文件对话框就很重要。

tkinter.filedialog中的askopenfilename就是文件对话框,预感这个函数可能不止一处出现,故而导入一下,以方便调用

from tkinter.filedialog import askopenfilename

这个函数的好处是,只返回读取到的文件名,而不像askopenfile一样返回一个文件对象。

self.btnLoadData函数,如果只是想实现一个最简单的功能,那么
可以写为

def btnLoadData(self):name = askopenfilename()data = np.genfromtxt(name)if data.shape[1] < 2:returnself.xs = data[:,0]self.ys = data[:,1]self.drawPlot()

效果如下

在这里插入图片描述

修改绘图逻辑

现在,我们有了两种数据生成模式,一是用语法生成,二是通过加载得到。但目前来说这两种生成方式并不兼容。为了解决这个问题,可以为x和y的输入框添加一个标识,比如当x或者y的输入框中是data的时候,再点击绘图,就可以选中加载后的数据。

由于tkinter中输入Entry内容比较繁琐,所以封装一个全局的函数专门用于更改Entry内容

def setEntry(e, text):e.delete(0, "end")e.insert(0, text)

接下来,将加载数据函数和绘图函数分别改写为

def btnLoadData(self):name = askopenfilename()data = np.genfromtxt(name)if data.shape[1] < 2:returnself.xs = data[:,0]setEntry(self.xEntry, "data")self.ys = data[:,1]setEntry(self.yEntry, "data")def btnDrawImg(self):xLab = self.xEntry.get()if xLab != "data":x = eval(f"np.linspace({xLab})")self.xs = xelse:x = self.xsyLab = self.yEntry.get()if yLab != "data":self.ys = eval(yLab)self.drawPlot()

在btnLoadData函数中,取消了绘图功能,而是在导入数据后,将xEntry和yEntry的内容设置为"data"。

而绘图函数中,检测xEntry和yEntry的内容,如果是data,那么说明已经读取到了相关数据,就直接调用,而非重新生成。

在这里插入图片描述

源代码

最后,把源代码附在下面

import tkinter as tk
import tkinter.ttk as ttk
from tkinter.filedialog import askopenfilenameimport matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.figure import Figureimport numpy as npdef setEntry(e, text):e.delete(0, "end")e.insert(0, text)class DarwSystem():def __init__(self):self.root = tk.Tk()self.root.title("数据展示工具")frmCtrl = ttk.Frame(self.root,width=320)frmCtrl.pack(side=tk.RIGHT, fill=tk.Y)self.setFrmCtrl(frmCtrl)frmFig = ttk.Frame(self.root)frmFig.pack(side=tk.LEFT,fill=tk.BOTH,expand=tk.YES)self.setFrmFig(frmFig)self.root.mainloop()def setFrmCtrl(self, frmCtrl):frm = ttk.Frame(frmCtrl, width=320)frm.pack(side=tk.TOP, fill=tk.X)self.setCtrlButtons(frm)frm = ttk.Frame(frmCtrl)frm.pack(side=tk.TOP, fill=tk.X)self.setFrmX(frm)frm = ttk.Frame(frmCtrl)frm.pack(side=tk.TOP, fill=tk.X)self.setFrmY(frm)def setFrmX(self, frm):tk.Label(frm, text="x").pack(side=tk.LEFT)self.xEntry = tk.Entry(frm)self.xEntry.pack(side=tk.LEFT, fill=tk.X)def setFrmY(self, frm):tk.Label(frm, text="y").pack(side=tk.LEFT)self.yEntry = tk.Entry(frm)self.yEntry.pack(side=tk.LEFT, fill=tk.X)def setCtrlButtons(self, frm):ttk.Button(frm, text="绘图",width=5,command=self.btnDrawImg).pack(side=tk.LEFT)ttk.Button(frm, text="加载",width=5,command=self.btnLoadData).pack(side=tk.LEFT)def btnLoadData(self):name = askopenfilename()data = np.genfromtxt(name)if data.shape[1] < 2:returnself.xs = data[:,0]setEntry(self.xEntry, "data")self.ys = data[:,1]setEntry(self.yEntry, "data")def btnDrawImg(self):xLab = self.xEntry.get()if xLab != "data":x = eval(f"np.linspace({xLab})")self.xs = xelse:x = self.xsyLab = self.yEntry.get()if yLab != "data":self.ys = eval(yLab)self.drawPlot()def drawPlot(self):self.fig.clf()ax = self.fig.add_subplot()ax.plot(self.xs, self.ys)self.fig.subplots_adjust(left=0.1, right=0.95, top=0.95, bottom=0.08)self.canvas.draw()passdef setFrmFig(self, frmFig):self.fig = Figure()self.canvas = FigureCanvasTkAgg(self.fig,frmFig)self.canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=tk.YES)self.toolbar = NavigationToolbar2Tk(self.canvas,frmFig,pack_toolbar=False)self.toolbar.update()self.toolbar.pack(side=tk.RIGHT)if __name__ == "__main__":test = DarwSystem()
http://www.hkea.cn/news/720383/

相关文章:

  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口
  • 点餐系统网站建设画质优化app下载
  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包
  • 中国工程局人才招聘网福建seo推广方案
  • 深圳南山做网站的公司百度投诉中心
  • 辽宁建设工程信息网业绩认定武汉网站优化公司
  • 莱芜都市人才网上海网站seo公司
  • 广州做鞋的网站怎么让某个关键词排名上去
  • 温州平阳县网站建设兼职东莞网络推广哪家公司奿
  • 做单页网站价格微信朋友圈广告在哪里做
  • 濮阳家电网站建设一般开车用什么导航最好
  • html5 图片展示网站大作设计网站
  • 河北正规网站建设比较百度一下你就知道官页
  • 企业网站建设哪家服务好福州网站关键词推广
  • 惠州悦商做网站软件开发一般需要多少钱
  • 做衣服外单网站优化大师官方正版下载
  • 专门做酒店的网站百度排行