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

面试学校网站开发泸县做网站公司

面试学校网站开发,泸县做网站公司,wordpress不知道用户名和密码,网店美工课本文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统#xff1a; 前置源码#xff1a; Python打造动态绘图系统#x1f4c8;一 三维绘图系统 #x1f4c8;二 多图绘制系统#x1f4c8;三 坐 标 轴 定 制#x1f4c8;四 定制绘图风格 #x1f4c8;五 数据… 文章目录 辅助坐标增减坐标轴时间轴**代码优化源代码 Python绘图系统 前置源码 Python打造动态绘图系统一 三维绘图系统 二 多图绘制系统三 坐 标 轴 定 制四 定制绘图风格 五 数据生成导入六 三维动态演示坐标列表进阶导出数据系统菜单批量文件导入辅助坐标轴 辅助坐标 通过eval实现的源码阅读功能具有非常强大的定制功能但落实到具体使用上坐标输入框中的代码总不能太长。如果想对数据进行复杂的处理那么就相当于提出了一个新的需求能否给出一些辅助坐标系用于数据处理。 这个功能并不复杂而且代码敲到现在应该可以说是很有经验了首先在工具栏末尾填上加减号按钮用于添加删除辅助坐标。 在initFeature结尾加上 btn ttk.Button(frm, text, width3) btn.pack(sidetk.LEFT) btn.bind(Button-1, self.addLast)btn ttk.Button(frm, text-, width3) btn.pack(sidetk.LEFT) btn.bind(Button-1, self.rmLast)界面变为 增减坐标轴 若想添加辅助坐标轴那么首先要给坐标轴取一个名字由于具体计算时都在函数中局部地进行故而可以用abcdefg这样一直下去一般不会出太大的问题。另一方面创建AxisFrame需要空间宽度和控件模式这两个参数而这个参数是从初始化时由外部传入的所以在初始化代码中添加两个全局变量 self.afWidth widths self.afMode mode而addLast代码如下 def addLast(self, evt):ABC abcdefghijklmnopqrsfor a in ABC:if a in self.afs:continueself.afs[a] AxisFrame(self._a, a, self.afMode, self.afWidth)breakself.updateVisible()这段代码相当于预设了最多20个辅助坐标大部分情况下应该是够用了。 减少坐标轴的逻辑和添加坐标轴相反但在pack_forget之后不要忘了把这个对象删掉。 def rmLast(self, evt):CBA abcdefghijklmnopqrs[::-1]for a in CBA:if a not in self.afs:continueself.afs[a].pack_forget()del self.afs[a]breakself.updateVisible()效果如下 时间轴** 在具体绘图时时间轴和其他坐标轴有着完全不同的操作这种不同也应该体现在AxisList的布局上。所以下面要为事件轴专门做一个开关就像最开始的txyz的独立开关按钮一样。 同时考虑到作图需求即有些图像不是三个轴能够完全搞定的比如箭头向量图。所以需要新增几个坐标轴。 self.vis {L : True for L in txyzuvw} for u in uvw: self.vis[u] False 这里需要改动的地方很多很零碎最重要的地方是dimChanged函数要把txyz编程’xyzuvw’ def dimChanged(self, evt):txyz self.getDim()for flag in xyzuvw:self.vis[flag] flag in txyzself.updateVisible()代码优化 至此AxisList就已经有了相对完备的功能但新增功能之后还需要做的就是代码的优化从可读性、复用率的角度对代码进行整理。 首先是文件格式常量以及字母表可先将其设为全局变量。 然后当对话框返回值为空时需要跳出函数。 另外控件显示和隐藏功能其实是可以和坐标轴的显隐功能合在一起的这也可以解决之前一直存在的一个bug。 源代码 最后附上源代码。关于AxisList的修改暂时可以告一段落了接下来将要做的是修改DrawStyle和DrawType这两个class。 import tkinter as tk import tkinter.ttk as ttk from tkinter.filedialog import * from tkinter.simpledialog import * from tkinter.messagebox import showwarning import numpy as npfrom aframe import AxisFrame, AskDct from base import DrawType, DrawStyleclass AxisList(ttk.Frame):def __init__(self, master, title, mode, widths, types, typeDct, # 绘图类型Combobox的参数**options):super().__init__(master, **options)self.pack()self.initConst()self.afs {}self.data {}self.afWidth widthsself.afMode modeself.initWidgets(title, widths)self.initFeature(types, typeDct)self.initAxis(mode, widths)self.initStyleFrame()def initConst(self):self.ABC abcdefghijklmnopqrsself.FILE_MERGE [(numpy数组, npy), (文本文件, csv)]self.FILE_ALL [(文本文件, txt), (文本文件, csv), (二进制文件, bin)]def initWidgets(self, title, widths):self.btn ttk.Button(self, texttitle, widthsum(widths)5,commandself.Click)self.btn.pack(sidetk.TOP, filltk.X, expandtk.YES)self._c ttk.Frame(self) # 此为主控件self._b ttk.Frame(self._c) # 工具栏控件self._a ttk.Frame(self._c) # 此为坐标轴self._s ttk.LabelFrame(self._c, text 绘图风格)self._b.pack(sidetk.TOP)self._a.pack(sidetk.TOP)self._s.pack(sidetk.TOP)self.collapsed Trueself.Click()# 初始化工具栏def initFeature(self, types, typeDct):frm self._bfrm.pack(pady2, sidetk.TOP, filltk.X)btn ttk.Menubutton(frm, text功能,width4)btn.pack(sidetk.LEFT)m self.initFileMenu(btn)btn.config(menum)self.drawType DrawType(frm, typeDct, funcself.dimChanged)self.drawType.pack(sidetk.LEFT, padx2)self.vis {L : True for L in txyzuvw}ttk.Button(frm, textt, width3, commandself.showTimeAxis).pack(sidetk.LEFT)btn ttk.Button(frm, text, width3)btn.pack(sidetk.LEFT)btn.bind(Button-1, self.addLast)btn ttk.Button(frm, text-, width3)btn.pack(sidetk.LEFT)btn.bind(Button-1, self.rmLast)def addLast(self, evt):for a in self.ABC:if a in self.afs:continueself.afs[a] AxisFrame(self._a, a, self.afMode, self.afWidth)breakself.updateVisible()def rmLast(self, evt):for a in self.ABC[::-1]:if a not in self.afs:continueself.afs[a].pack_forget()del self.afs[a]breakself.updateVisible()def showTimeAxis(self):self.vis[t] not self.vis[t]self.updateVisible()# 设置菜单def initFileMenu(self, btn):top tk.Menu(btn, tearoffFalse)menuDct {导入 : {按坐标轴 : self.mImportOne, 合并导入 : self.mImportMerge, 多文件导入: self.mImportAll},导出 : {合并导出 : self.mExportMerge,全部导出 : self.mExportAll,单轴导出 : self.mExportOne},窗口 : { 风格 : self.btnShowStyle}}for key in menuDct:m tk.Menu(top, tearoffFalse)for L,C in menuDct[key].items():m.add_command(labelL, command C)top.add_cascade(labelkey, menum)self.showStyle Falsereturn top# 加载数据def btnLoadData(self):name askopenfilename()data np.genfromtxt(name)for i, flag in enumerate(xyzuvw):if i data.shape[1]:returnself.setOneMode(flag, 外部导入)self.data[flag] self.setData(flag, data[:,i])def mImportOne(self):fs askstring(设置参数, 坐标轴间按照逗号分开)fs fs.replace(, ,).split(,)for f in fs:if f not in self.getDim():showwarning(您输入的坐标轴并不存在)continueself.afs[f].setMode(外部导入)self.afs[f].slctChanged(None)self.afs[f].btnImportComplex(None) def mImportAll(self):fs askopenfilenames(filetypesself.FILE_ALL)for i,f in enumerate(self.getDim()):if i len(fs) : returnself.afs[f].setMode(外部导入)self.afs[f].slctChanged(None)self.afs[f].btnImportSimple(None)def mImportMerge(self):path askopenfilename(filetypesself.FILE_MERGE)if path : returnif path.endswith(.npy):data np.load(path)else:data np.loadtxt(path)for i,f in enumerate(self.getDim()):if i len(data): continueself.afs[f].setMode(外部导入)self.afs[f].slctChanged(None)self.afs[f].data data[i]def mExportMerge(self):path asksaveasfilename(filetypesself.FILE_MERGE, initialfileTrue)if path : returnarr np.array([self.afs[flag].data for flag in self.getDim()])if path.endswith(.npy):arr.tofile(path)else:np.savetxt(path, arr, delimiter, )def mExportAll(self):path askdirectory()if path : returnfor flag in self.getDim():#self.afs[flag].save(path)passdef mExportOne(self):flag askstring(请选择输出的轴)if flag not in self.getDim():showwarning(您输入的坐标轴并不存在)#self.afs[flag].save()# 初始化坐标轴def initAxis(self, mode, widths):for flag in txyzuvw:self.afs[flag] AxisFrame(self._a, flag, mode, widths)self.afs[flag].pack(sidetk.TOP, filltk.X)self.vis {L : L in self.getDim() for L in txyzuvw}self.updateVisible()# 初始化风格控件def initStyleFrame(self):self.drawStyle DrawStyle(self._s)self.drawStyle.pack(sidetk.TOP, filltk.X)# 维度改变时的回调函数def dimChanged(self, evt):txyz self.getDim()for flag in xyzuvw:self.vis[flag] flag in txyzself.updateVisible()# 更新隐藏和显示def updateVisible(self):for key in self.afs:self.afs[key].pack_forget()for key in self.ABC:if key in self.afs:self.afs[key].pack(sidetk.TOP, filltk.X)for flag in txyzuvw:if self.vis[flag]:self.afs[flag].pack(sidetk.TOP, filltk.X)if self.showStyle:self._s.pack(sidetk.TOP, filltk.X)else:self._s.pack_forget()def btnShowStyle(self):self.showStyle not self.showStyleself.updateVisible()def getSub(self):return self.drawType.getSub()def getProj(self):return self.drawType.getProj()def getType(self):return self.drawType.getType()def getDim(self):xyz self.getXYZ()if self.vis[t]:xyz t xyzreturn xyzdef getXYZ(self):return self.drawType.getDim()def hasTimeAxis(self):return self.vis[t]def getStyle(self):return self.drawStyle.getVarDct()def Click(self):if self.collapsed:self._c.pack(sidetk.TOP, filltk.BOTH, expandtk.YES) else:self._c.pack_forget()self.collapsed not self.collapsed# 设置数据def setData(self, flag, dataNone, **options):return self.afs[flag].setData(data, **options)# 设置模式def setOneMode(self, flag, mode):self.afs[flag].setMode(mode)
http://www.dnsts.com.cn/news/113275.html

相关文章:

  • 免费seo网站推荐一下软件如何做网站哪个站推广
  • 自己建立网站怎么建注册域名和建立网站的过程
  • 云服务器怎么上传网站外包给网站建设注意事项
  • 玉田县建设局网站wordpress如何优化速度
  • 网站建设的方案模板端游网络游戏排行榜
  • 医院网站icp备案吗北京网站备案流程
  • 大兴网站建设优化seo2021企业公司大黄页
  • 九江专业网站建设定制360免费wifi创建失败怎么回事
  • 合肥网站关键词微信分销网站建设哪家好
  • 网络宣传网站建设wordpress用户同步
  • 深圳网站建设 营销汉化wordpress 购物
  • 怎么编写网站没有网站怎样做外贸
  • 大连营商环境建设局网站2345网址导航用户中心
  • vr 做的网站网站 微信认证
  • 南宁模板建站哪家好网站建设维护协议
  • 公司做铸造的招聘网站都有哪些深圳网站建设公司联系方式
  • 制作网站空间域名枣庄三合一网站开发
  • 东莞网站建设备案建设有限公司首页
  • 自己做炉石卡牌的网站安徽省六安市城乡建设厅网站
  • 聊城手机网站建设方案做健身网站步骤
  • 专业做网站平台SQL如何建网站
  • 金华大企业网站建设有哪些锦江建设和交通局网站
  • 网站建设吧手游排行榜2021前十名
  • 有了域名后怎么做网站电商网站建设心得
  • 知道一个网站怎么知道是谁做的百度优化西安网站建设工程
  • 网站主题风格用户服务管理系统
  • 专做中医教学网站建个网站要花多少钱
  • 榆垡网站建设搬瓦工一键WordPress
  • 各大网站推荐wordpress邀请有奖
  • 如何用自己电脑做销售网站网页制作专业前台