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

上海高端网站公司wordpress头像网站

上海高端网站公司,wordpress头像网站,网站 稳定性,电子商务网站业务流程分析文章目录 Combobox绑定事件互相调用源代码 Python绘图系统#xff1a; #x1f4c8;从0开始实现一个三维绘图系统自定义控件#xff1a;坐标设置控件#x1f4c9;坐标列表控件#x1f4c9;支持多组数据的绘图系统图表类型和风格#xff1a;散点图和条形图#x1f4ca;混… 文章目录 Combobox绑定事件互相调用源代码 Python绘图系统 从0开始实现一个三维绘图系统自定义控件坐标设置控件坐标列表控件支持多组数据的绘图系统图表类型和风格散点图和条形图混合类型图表 Combobox绑定事件 DrawType类可以设置绘图维度而绘图维度和坐标轴的个数是息息相关的。换言之一个比较合理的交互逻辑是改选DrawType的维度后就应该可以改变坐标轴的个数。为了实现这个功能需要为ComboBox绑定一个事件改动起来非常简单只需在initWidgets最后加上一行就可以。 def initWidgets(self, ws):if wsNone: ws [8, 3]slct ttk.Combobox(self, widthws[0], textvariableself.drawType)slct[value] self.typesslct.pack(sidetk.LEFT)slct ttk.Combobox(self, widthws[1], textvariableself.drawDim)slct[value] self.dimsslct.pack(sidetk.LEFT)slct.bind(ComboboxSelected, self.dimChanged)接下来比较重要的则是self.dimChanged的定义。由于我们希望当Combobox改变时是另一个控件的内容发生变化所以self.dimChanged最好是其他控件传入的一个函数。故而需要更改DrawType的初始化函数即添加一个func参数然后把这个参数赋给self.dimChanged方法。 def __init__(self, master, types, slctType, slctDim3, wsNone, funcNone, **options):super().__init__(master, **options)#。。。self.dimChanged func# 。。。互相调用 最后修改AxisList中初始化DrawType的语句 self.drawTypeDim DrawType(frm, types, slctType, funcself.dimChanged)并创建self.dimChanged函数代码如下逻辑是根据当前选择的维度来更新txyz这几个AxisFrame。 def dimChanged(self, evt):txyz self.getDrawDim()for flag in txyz:self.vis[flag] flag in txyzself.updateVisible()def updateVisible(self):for flag in txyz:self.afs[flag].pack_forget()for flag in txyz:if self.vis[flag]:self.afs[flag].pack(sidetk.TOP, filltk.X) 效果如下 最后的最后在坐标轴创建时也应该遵循绘图维度和坐标个数之间的关系这样打开软件或者新创建一组坐标的时候就可以自动与绘图维度相匹配了。 def initAxis(self, mode, widths):for flag in txyz:self.afs[flag] AxisFrame(self._c, flag, mode, widths)self.afs[flag].pack(sidetk.TOP, filltk.X)self.vis {L : L in self.getDrawDim() for L in txyz}self.updateVisible() 源代码 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 npclass AxisFrame(ttk.Frame):# widths 是每个控件的宽度def __init__(self, master, label, mode, widths, **options):super().__init__(master, **options)self.pack()self.label labelself.initVar(mode)self.initWidgets(widths)def initVar(self, mode):self.MODES (序列化, 源代码, 外部导入, 无数据)self.mode tk.StringVar()self.setMode(mode)def initWidgets(self, widths):tk.Label(self, textself.label, widthwidths[0]).pack(sidetk.LEFT)self.slct ttk.Combobox(self, widthwidths[1], textvariableself.mode)self.slct[value] self.MODESself.slct.pack(sidetk.LEFT)self.entry tk.Entry(self, widthwidths[2])self.entry.pack(padx5, sidetk.LEFT, filltk.X)def setText(self, text):self.entry.delete(0, end)self.entry.insert(0, text)def get(self):return self.entry.get()def setMode(self, mode):if type(mode) ! str:mode self.MODES[mode]self.mode.set(mode)def setData(self, dataNone, **txyz):if self.mode.get() 序列化:return self.getArray()elif self.mode.get() 外部导入:return self.loadData(data)else:return self.readPython(**txyz)def readPython(self, tNone, xNone, yNone, zNone):self.data eval(self.get())return self.datadef loadData(self, data):if type(data) ! type(None):self.data datareturn self.datadef getArray(self):val self.get()self.data eval(fnp.linspace({val}))return self.dataclass AxisList(ttk.Frame):def __init__(self, master, title, mode, widths, types, slctType, # 绘图类型Combobox的参数**options):super().__init__(master, **options)self.pack()self.afs {}self.data {}self.initWidgets(title, widths)self.initFeature(types, slctType)self.initAxis(mode, widths)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.collapsed Trueself.Click()def initFeature(self, types, slctType):frm ttk.Frame(self._c)frm.pack(pady2, sidetk.TOP, filltk.X)ttk.Button(frm, text加载,width5,commandself.btnLoadData).pack(sidetk.LEFT)frm ttk.Frame(self._c)frm.pack(pady2, sidetk.TOP, filltk.X)self.drawTypeDim DrawType(frm, types, slctType, funcself.dimChanged)self.drawTypeDim.pack(sidetk.LEFT)self.vis {L : True for L in txyz}for flag in txyz:btn ttk.Button(frm, textflag, width3)btn.pack(sidetk.LEFT)btn.bind(Button-1, self.btnAxisCollapse)def dimChanged(self, evt):txyz self.getDrawDim()for flag in txyz:self.vis[flag] flag in txyzself.updateVisible()def updateVisible(self):for flag in txyz:self.afs[flag].pack_forget()for flag in txyz:if self.vis[flag]:self.afs[flag].pack(sidetk.TOP, filltk.X)def getDrawType(self):return self.drawTypeDim.getType()def getDrawDim(self):return self.drawTypeDim.getDim()def initAxis(self, mode, widths):for flag in txyz:self.afs[flag] AxisFrame(self._c, flag, mode, widths)self.afs[flag].pack(sidetk.TOP, filltk.X)self.vis {L : L in self.getDrawDim() for L in txyz}self.updateVisible()def btnAxisCollapse(self, evt):flag evt.widget[text]self.vis[flag] not self.vis[flag]self.updateVisible()def btnLoadData(self):name askopenfilename()data np.genfromtxt(name)for i, flag in enumerate(xyz):if i data.shape[1]:returnself.setOneMode(flag, 外部导入)self.data[flag] self.setData(flag, data[:,i])def Click(self):if self.collapsed:self._c.pack(sidetk.TOP, filltk.BOTH, expandtk.YES) else:self._c.pack_forget()self.collapsed not self.collapseddef setData(self, flag, dataNone, **options):return self.afs[flag].setData(data, **options)def setOneMode(self, flag, mode):self.afs[flag].setMode(mode)# 绘图类型和维度 class DrawType(ttk.Frame):# ws为两个combobox的宽def __init__(self, master, types, slctType, slctDim3, wsNone, funcNone, **options):super().__init__(master, **options)self.pack()self.types types # 绘图类型self.dims (1, 2, 3, 11, 21, 31) # 绘图维度self.dimChanged funcself.initVar(slctType, slctDim)self.initWidgets(ws)def initVar(self, slctType, dim):self.drawType tk.StringVar()self.drawType.set(slctType)self.drawDim tk.StringVar()if type(dim) ! str:dim self.dims[int(dim)]self.drawDim.set(dim)def initWidgets(self, ws):if wsNone: ws [8, 3]slct ttk.Combobox(self, widthws[0], textvariableself.drawType)slct[value] self.typesslct.pack(sidetk.LEFT)slct ttk.Combobox(self, widthws[1], textvariableself.drawDim)slct[value] self.dimsslct.pack(sidetk.LEFT)slct.bind(ComboboxSelected, self.dimChanged)def getType(self):return self.drawType.get()def getDim(self):dim self.drawDim.get()dimDct {1 : x, 2 : xy, 3 : xyz, 11: tx, 21: txy, 31: txyz}return dimDct[dim]class DarwSystem():def __init__(self):self.root tk.Tk()self.root.title(数据展示工具)self.data {}self.als []self.initConst()self.setFrmCtrl()frmFig ttk.Frame(self.root)frmFig.pack(sidetk.LEFT,filltk.BOTH,expandtk.YES)self.setFrmFig(frmFig)self.root.mainloop()def initConst(self):self.TYPES (点线图, 散点图, 条形图)self.drawDct {点线图 : self.drawPlot,散点图 : self.drawScatter,条形图 : self.drawBar}def setFrmCtrl(self):frmCtrl ttk.Frame(self.root,width320)frmCtrl.pack(sidetk.RIGHT, filltk.Y)frm ttk.Frame(frmCtrl, width320)frm.pack(sidetk.TOP, filltk.X)self.setCtrlButtons(frm)self.frmAxis ttk.Frame(frmCtrl)self.frmAxis.pack(sidetk.TOP, filltk.X)self.addLast(None)# ! 工具栏def setCtrlButtons(self, frm):self.drawTypeDim DrawType(frm, self.TYPES, 点线图)self.drawTypeDim.pack(sidetk.LEFT)ttk.Button(frm, text绘图,width5,commandself.btnDrawImg).pack(sidetk.LEFT)ttk.Button(frm, text加载,width5,commandself.btnLoadData).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.deleteLast)def addLast(self, evt):title f坐标{len(self.als)}al AxisList(self.frmAxis, title, 1, [5,10,20], self.TYPES, self.drawTypeDim.getType())al.pack(sidetk.TOP, filltk.X)self.als.append(al)def deleteLast(self, evt):self.als[-1].pack_forget()del self.als[-1]def btnLoadData(self):name askopenfilename()data np.genfromtxt(name)for i, flag in enumerate(xyz):if i data.shape[1]:returnself.AL.setOneMode(flag, 外部导入)self.data[flag] self.AL.setData(flag, data[:,i])def readDatas(self, al):dct {}data {}for flag in xyz:data[flag] al.setData(flag, **dct)dct[flag] data[flag]return datadef btnDrawImg(self):self.fig.clf()keys self.drawTypeDim.getDim()p 3d if z in keys else Noneax self.fig.add_subplot(projectionp)for al in self.als:data self.readDatas(al)draw self.drawDct[al.getDrawType()]draw(ax, data, keys)self.fig.subplots_adjust(left0.1, right0.95, top0.95, bottom0.08)self.canvas.draw()def drawBar(self, ax, data, keys):ax.bar(data[x], data[y])def drawPlot(self, ax, data, keys):ax.plot(*[data[key] for key in keys])def drawScatter(self, ax, data, keys):ax.scatter(*[data[key] for key in keys])def setFrmFig(self, frmFig):self.fig Figure()self.canvas FigureCanvasTkAgg(self.fig,frmFig)self.canvas.get_tk_widget().pack(sidetk.TOP,filltk.BOTH,expandtk.YES)self.toolbar NavigationToolbar2Tk(self.canvas,frmFig,pack_toolbarFalse)self.toolbar.update()self.toolbar.pack(sidetk.RIGHT)if __name__ __main__:test DarwSystem()
http://www.w-s-a.com/news/982113/

相关文章:

  • 淅川网站建设如何在百度上做自己的网站
  • 网站制作 南通有学给宝宝做衣服的网站吗
  • 做西式快餐店网站网络营销的含义是什么
  • 网络销售代理加盟南京seo排名扣费
  • 赤峰中国建设招标网站网站开发投标文件
  • 域名抢住网站婚庆网页设计
  • 公司网站建设的通知南宁怎么做网站
  • 搜狐快站建站教程电子商务网站后台模板
  • .gs域名做网站怎么样做网站有没有用
  • 肇庆住房和城乡建设局网站广州seo公司排名
  • j2ee网站开发买什么书网络媒体有哪些
  • 江西省住房建设部官方网站用多说的网站
  • 云课堂哪个网站做的好网站 集约化平台建设方案的通知
  • 撰写网站栏目规划怎么建自己的平台
  • 中国建设银行巴黎分行网站建设银行忘记密码网站首页
  • 网站左侧树形导航怎么做像wordpress一样的网站吗
  • 做网站用的书公司做网站 需要解决哪些问题
  • 电器网站建设策划书深圳动画制作
  • cpa网站建设wordpress支付宝微信收费吗
  • 权威网站排名桂林生活网论坛
  • 网站设计息济南网站建设济南
  • 安蓉建设总公司网站网站怎么做才能被百度收录
  • 电子商务网站业务流程分析做效果图的外包网站
  • wordpress仿站视频教程wordpress用什么php版本好
  • 郑州做网站九零后网络沧州做网站的专业公司
  • 小游戏网站建设可以自己做图片的软件
  • 湖南地税局官网站水利建设基金app仿制
  • 苏州网站设计kgwl建设网站需要用到哪些技术人员
  • 万户网络做网站如何亚马逊网站建设
  • 门户网站制作费用暴雪公司最新消息