Python绘图系统22:实现系统菜单

news2024/11/25 3:46:30

文章目录

    • 文件菜单
    • 子部件开关

Python绘图系统:

  • 前置源码: Python打造动态绘图系统
  • 📈一 三维绘图系统 📈二 多图绘制系统📈三 坐 标 轴 定 制
  • 📈四 定制绘图风格 📈五 数据生成导入📈六 三维动态演示
  • 坐标列表进阶:导出数据📌系统菜单

文件菜单

无论是和已经相对丰富的AxisFrame中的导入按钮相比,还是和刚刚实现的导出功能相比,AxisList的导入功能是十分羸弱的。如果以导出功能为模板,则导入功能也许考虑多种情况,有的时候可能只需要导入某一坐标维度的数据,有的时候却可能需要导入所有当前坐标的数据,后者又分为两种情况,一种是导入多个文件,一种是导入单个文件。

所以,实现导入功能,看来也需要用到Menubutton这个部件。

另一方面,文件导入和导出同属文件交互功能,所以比较适合放在同一个按钮菜单下。方法,自然是改造刚刚实现的导出按钮,最终效果如下

在这里插入图片描述
initFeature中相关代码改为

    btn = ttk.Menubutton(frm, text="文件",width=4)
    btn.pack(side=tk.LEFT)
    m = self.initMenu(btn)
    btn.config(menu=m)

initFileMenu代码如下

def initMenu(self, btn):
    top = tk.Menu(btn, tearoff=False)

    m = tk.Menu(top, tearoff=False)
    m.add_command(label="单轴导入", command = self.mImportOne)
    m.add_command(label="合并导入", command = self.mImportMerge)
    m.add_command(label="多文件导入", command = self.mImportAll)
    top.add_cascade(label="导入", menu=m)

    m = tk.Menu(top, tearoff=False)
    m.add_command(label="合并导出", command = self.mExportMerge)
    m.add_command(label="全部导出", command = self.mExportAll)
    m.add_command(label="单轴导出", command = self.mExportOne)
    top.add_cascade(label="导出", menu=m)
    return top

其中,add_command为菜单绑定功能选项,add_cascade用于添加子菜单。其中self.mImportOne, self.mImportMerge以及self.mImportAll属于尚未完成的功能,可先把函数写好备用。

子部件开关

受到文件菜单的启发,或许用于调控风格控件的按钮,也可以并入到菜单里,从而节省工具栏的空间。这样一来,菜单按钮叫文件已经不合适了,可以改名为功能。然后在initMenu函数末尾添加

    m = tk.Menu(top, tearoff=False)
    m.add_command(label="风格", command = self.btnShowStyle)
    self.showStyle = False
    top.add_cascade(label="窗口", menu=m)

这个self.btnShowStyle是已经实现好的功能,最后效果如下

在这里插入图片描述
由于本文对代码的改动比较集中,所以就不贴放修改后的源代码了。本文代码的修改,建立在导出数据这篇博客之上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1049796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app:顶部导航栏图标titleImage

效果 文件 pages.json 代码 "pages": [//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/search/index/index","style": {"titleImage":"…

开源博客项目Blog .NET Core源码学习(3:数据库操作方式)

开源博客项目Blog采用SqlSugar模块连接并操作数据库,本文学习并记录项目中使用SqlSugar的方式和方法。   首先,数据库连接信息放在了App.Hosting项目的appsettings.json中DbConfig节,支持在DbConfig节配置多个数据库连接信息,以…

第二招牌战略洞察|王老吉与加多宝共同的课题:受困于第二招牌

王老吉频繁出新产品,却难觅结构性增长。王老吉曾经凭借凉茶单品反超可口可乐,却在2015年后面临增速下滑、市场规模逐年缩小的增长困境。事实上,王老吉所在的凉茶市场现已成为存量市场,甚至在不断激化的竞争中逐年萎缩。为了打破原…

Python 基于 Yolov8 + CPU 实现物体检测

目录 一、开发环境 二、安装 Python 基于 Yolov8 物体检测关联库 2.1 打开命令提示符(cmd)或终端,安装库 2.2 关联库安装过程遇到的问题 三、基于 Yolov8 物体检测代码实现(完整) 3.1 Yolov8 物体检测完整代码…

复杂链表的深度拷贝

给定一个链表,每个结点包含一个额外增加的随机指针,该指针可以指向链表中的任何结点 或空结点。 要求返回这个链表的深度拷贝。 我们想要拷贝这个指针就要考虑到 1.不仅仅拷贝出来的指针next是相同的,rondom也要相同 2.拷贝完后不改变原链表 …

智慧安防视频监控技术+AI智能分析算法助力美好乡村建设

上期我们聊到AI智能视频监控技术如何助力美好乡村建设?的相关方案,收到了很多粉丝的讨论与关注,视频监控只是乡村建设极其基础的一环,基于视频监控平台的AI智能算法,将人工智能融合到安防监控之中,才能让乡…

设计模式3、工厂方法模式 Factory Method

解释说明:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类 抽象工厂(AbstractFactory):提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法…

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP)

2009-2018年31省份旅游收入(入境、国内、总收入;第三产值;GDP) 1、时间:2009-2018年 2、指标: 汇率、入境旅游收入(万美元)、国内旅游收入(亿元&#xff0…

REASUNOS瑞森半导体-MOS管系列在服务器电源上的应用

一、前言 服务器电源是指使用在服务器上的电源(POWER),它和PC电源一样,都是一种开关电源,指能够将交流电转换为服务器所需直流电的电源。 服务器电源按照标准可以分为ATX电源和SSI电源等。ATX标准使用较为普遍&…

DAP-seq在植物转录因子的应用案例助你打通研究思路

众所周知,转录因子 (Transcription Factors, TFs)是指能够以序列特异性方式结合DNA并且调节转录的蛋白质。TF与特异性DNA序列结合调节转录,同时会和其它功能蛋白结合调控下游基因的转录和翻译过程,也会和增强子等其它顺式作用元件结合&#x…

MySQL基础篇-基本sql语句

目录 1.SQL分类 2.SQL-DDL 2.1 数据库操作 查询 创建 删除 使用某个数据库 2.2 数据表操作 创建表 查询表 修改表 3.SQL-DML(增删改) 3.1 插入 3.2 修改 3.3 删除 4.SQL-DQL(查) 4.1 基础查询 4.2 条件查询 4.3 聚合函数查询 4.4 分组查询 4.5 排序查询 …

在EXCEL中构建加载项之创建加载项的目的及规范要求

【分享成果,随喜正能量】一句南无阿弥陀佛,本是释迦牟尼佛所证的无上正等正觉法,洒在娑婆世界的众生海中,只为末世众生能够以信愿之心抓住此救命稻草,要知道今世人此生的处境,可能只剩这道要么极乐要么三涂…

C++之 lambda表达式

lambda表达式 lambda表达式概念lambda表达式语法lambda表达式底层原理 lambda表达式概念 我们在以往需要对某些数据进行排序时,比如一个数组,我们就需要用到sort()函数: int main() {int arr[] { 3,1,2,4,8,7,5,9 };//升序sort(arr, arr …

day36-xml

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

使用 KerasCV YOLOv8 进行物体检测--附完整实现源码

YOLO 目标检测模型已应用于无数应用,从监控系统到自动驾驶车辆。但是,当在 KerasCV 框架下将 YOLOv8 的这种能力配对时会发生什么呢?最近,KerasCV 将著名的 YOLOv8 检测模型集成到其库中。在本文中,我们将探讨如何使用自定义数据集微调 YOLOv8。在此过程中,我们还将涵盖以…

wireshark of tshark tools v3.4.0版本 支持json

tshark(1) Install tshark (Wireshark) Ver.3.4.0 on CentOS7 --It must be "ps", "text", "pdml", "psml" or "fields". TCP 协议中的三次握手和四次挥手是 TCP 连接建立和关闭的过程。 三次握手 客户端向服务器发送 SYN…

Java自学(二)

目录 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 一、数组逆置(临时变量法) 二、基本类型和引用类型传参的区别 基本类型传参,形参一般不会改变实参。 形参是实参的一份数据拷贝,改变形…

Android12之解封装NuMediaExtractor::setDataSource过程(四十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Python之网络协议

一、网络通信协议 国际标准化组织(ISO,即International Organization for Standardization)定义了网络通信协议的基本框架,被称为OSI(Open System Interconnect,即开放系统互联)模型。要制定通讯规则,内容会很多,比如要考虑A电脑如何找到B电脑,A电脑在发送信息给B电脑时…

十五、异常(3)

本章概要 捕获所有异常 多重捕获栈轨迹重新抛出异常精准的重新抛出异常异常链 捕获所有异常 可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类 Exception,就可以做到这一点(事实上还有其他的基类,但 Exception 是所…