如何在 wxPython 中创建多个工具栏

2023-11-19

在GUI编程领域,wxPython已经成为一个功能强大且通用的库,使开发人员能够轻松制作令人惊叹的图形用户界面。在众多基本组件中,工具栏在为用户提供对各种功能的快速访问方面发挥着至关重要的作用。在本教程中,我们将深入探讨使用 wxPython 创建多个工具栏的艺术。最后,您将掌握使用多个工具栏增强 GUI 应用程序的知识,从而提供更好的用户体验。

安装

用于GUI原型设计的wxPython库

作为C++库wxWidgets的包装器,wxPython允许Python开发人员利用这个成熟且经过实战测试的框架的强大功能。它具有各种平台的本机外观和感觉,包括Windows,macOS和Linux。使用 wxPython,您可以使用各种小部件(例如按钮、文本控件,当然还有工具栏)设计具有视觉吸引力且响应迅速的桌面应用程序。

pip install wxPython

算法

  • 导入 wxPython 库。

  • 创建从 wx 继承的自定义窗口类。框架。

  • 通过调用父类构造函数并将窗口标题作为参数传递来初始化自定义窗口类。

  • 在框架内创建一个面板以容纳微件。

  • 使用 CreateToolBar() 方法为窗口创建工具栏。

  • 使用 AddTool() 方法将三个工具添加到工具栏:

    • 带有相应图标“icon_open.bmp”的“打开”。

    • “保存”与相应的图标“icon_save.bmp”。

    • 带有相应图标“icon_highlight.bmp”(切换按钮)的“突出显示”。

  • 使用 AddControl() 方法将组合框(下拉列表)作为工具 4 添加到工具栏中,其中包含“选择 1”和“选择 2”。

  • 初始化工具栏以显示它。

  • 使用 Centre() 方法将窗口居中显示在屏幕上。

  • 使用 Show() 方法显示自定义窗口。

  • 使用 wx 创建 wxPython 应用程序。应用()。

  • 创建并显示自定义窗口对象。

  • 运行主事件循环,以便 GUI 在屏幕上弹出。

下载这些图标并将其保存在与脚本相同的文件中,否则您将遇到错误。

icon_save.bmp

icon_open.bmp

icon_highlight.bmp

import wx class CustomWindow(wx.Frame):    def __init__(self, title):       # Initialize the parent class constructor       super().__init__(parent=None, title=title)       self.panel = wx.Panel(self)       # Toolbar for the window       toolbar = self.CreateToolBar()       # Tool 1        open_tool_id = wx.ID_ANY       open_tool_label = "Open"       open_tool_bitmap = wx.Bitmap("icon_open.bmp")       toolbar.AddTool(open_tool_id, open_tool_label, open_tool_bitmap)       # Tool 2       save_tool_id = wx.ID_ANY       save_tool_label = "Save"       save_tool_bitmap = wx.Bitmap("icon_save.bmp")       toolbar.AddTool(save_tool_id, save_tool_label, save_tool_bitmap)       # Tool 3       highlight_tool_id = wx.ID_ANY       highlight_tool_label = "Highlight"       highlight_tool_bitmap = wx.Bitmap("icon_highlight.bmp")       width, height = 24, 24       toolbar.AddCheckTool(highlight_tool_id, highlight_tool_label, highlight_tool_bitmap)       # Combo Box (Dropdown) toolbar       combo = wx.ComboBox(toolbar, choices=["Selection 1", "Selection 2"])       toolbar.AddControl(combo)       toolbar.Realize()       self.Centre()       self.Show() app = wx.App() # Show the custom window custom_window = CustomWindow("TutorialsPoint wxPython MultiToolbar") app.MainLoop()

输出

解释

  • 首先,导入wxPython库以使用其功能。

  • 定义了一个名为 CustomWindow 的自定义窗口类,该类继承自 wx。帧类。

  • 在 CustomWindow 类的 __init__ 构造函数中:

  • super().__init__(parent=None, title=title) 行初始化父类构造函数 (wx.框架)与给定的标题,创建主窗口。

  • 名为 self 的面板。面板将创建为框架的子级。面板用于保存wxPython应用程序中的小部件(控件)。

  • 使用 CreateToolBar() 方法为窗口创建一个工具栏。

  • 使用 AddTool() 方法将三个工具添加到工具栏中:

    • 工具 1 具有“打开”标签和“图标打开.bmp”图标。

    • 第二个工具具有“保存”标签和“图标保存.bmp”图标。

    • 工具 3 的“突出显示”标签和“图标突出显示.bmp”图标 它被设计为可审核的工具(切换按钮)。

  • 使用 AddControl() 方法,组合框(下拉列表)作为工具 4 添加到菜单栏中。“选择 1”和“选择 2”是组合框中存在的选项。

应用

要构建具有各种功能的复杂应用程序,需要工具栏。有时一个工具栏是不够的。将功能分离到多个工具栏中可简化用户体验。它对后端逻辑进行分区,并使应用易于使用和导航。这同样适用于各种生产力工具(例如文本编辑器、音乐播放器等)。例如。MS Word,Excel,Jira,Music Player等具有多个工具栏。每个都有一个下拉列表,其中包含与该特定工具栏相关的选项。

结论

本教程演示了如何在 wxPython 中构建许多工具栏。使用呈现的代码,您可以增强 GUI 应用程序的可用性。通过遵循安装过程并了解语法,可以将这些工具栏集成到项目中。将不同功能的工具栏分开可增强可用性和用户体验。wxPython 是创建复杂且有吸引力的 GUI 应用程序的可靠伴侣。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 wxPython 中创建多个工具栏 的相关文章

  • python sys.path 故障排除

    python 文档位于http docs python org library sys html http docs python org library sys html比如说sys path is 从环境变量 PYTHONPATH 以及
  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • 是否可以从 Julia 调用 Python 函数并返回其结果?

    我正在使用 Python 从网络上抓取数据 我想使用这些数据在 Julia 中运行计算 是否可以在 Julia 中调用该函数并返回其结果 或者我最好直接导出到 CSV 并以这种方式加载数据 绝对地 看PyCall jl https gith
  • 在Python中从大文件中搜索单词列表

    我是新蟒蛇 我有一个单词列表和一个非常大的文件 我想删除文件中包含单词列表中的单词的行 单词列表按排序给出 并且可以在初始化期间输入 我正在努力寻找解决这个问题的最佳方法 我现在正在进行线性搜索 这花费了太多时间 有什么建议么 您可以使用i
  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • Plotly:如何检查基本图形结构(版本 4)

    对于旧版本的plotly 例如在 Jupyterlab 中 您可以简单地运行figure像这样检查你的图形的基础知识 Ouput data marker color red size 10 symbol 104 mode markers l
  • 在Raspberry pi上升级skimage版本

    我已经使用 Raspberry Pi 2 上的 synaptic 包管理器安装了 python 包 然而 skimage 模块版本 0 6 是 synaptic 中最新的可用版本 有人可以指导我如何将其升级到0 11 因为旧版本中缺少某些功
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 如何从namedtuple实例列表创建pandas DataFrame(带有索引或多索引)?

    简单的例子 from collections import namedtuple import pandas Price namedtuple Price ticker date price a Price GE 2010 01 01 30
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的
  • 将 Keras 集成到 SKLearn 管道?

    我有一个 sklearn 管道 对异构数据类型 布尔 分类 数字 文本 执行特征工程 并想尝试使用神经网络作为我的学习算法来拟合模型 我遇到了输入数据形状的一些问题 我想知道我想做的事情是否可能 或者我是否应该尝试不同的方法 我尝试了几种不
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发

随机推荐

  • 生信学习——Linux必做20题(附详细答案解读)

    题目列表 1 在任意文件夹下面创建形如 1 2 3 4 5 6 7 8 9 格式的文件夹系列 2 在创建好的文件夹 home qiime2 Desktop test 1 2 3 4 5 6 7 8 9 下创建文本文件 me txt 3 在文
  • C#中unsafe的使用

    1 unsafe在C 程序中的使用场合 实时应用 采用指针来提高性能 引用非 net DLL提供的如C 编写的外部函数 需要指针来传递该函数 调试 用以检测程序在运行过程中的内存使用状况 2 使用unsafe的利弊 好处是 性能和灵活性提高
  • python 分段拟合 判别_利用Python检验你的策略参数是否过拟合(转)

    过拟合现象 一般来说 量化研究员在优化其交易策略参数时难免会面临这样一个问题 优化过后的策略在样本内表现一般来说均会超过其在样本外的表现 即参数过拟合 对于参数优化来说 由于优化时存在噪音 过拟合是不可避免的现象 然而为了追求策略的稳定性
  • unity期末作业-插针游戏

    unity期末作业 插针游戏 附下载链接 鼠标控制针的发射 圆盘可以显示接住的针数目 若两根针碰到则界面变红 游戏结束 详细情况如下动态图 点我下载 https download csdn net download weixin 43474
  • 从云到「链」,京东云成为中国第四朵云背后

    在产业加速到数实融合加速的今年 云计算不再是云厂商的唯一考校指标 作者 叶子 出品 产业家 京东云再次破圈 信号来自接连发布的几份报告 在国际权威研究机构Forrester发布的名为 The Forrester Wave Public Cl
  • maven官网下载bin.tar.gz和bin.zip以及src.tar.gz和src.zip的区别

    maven官网http maven apache org download cgi 去官网下载的时候不知道选哪个 现在记录一下 首先弄清楚各后缀的含义 1 bin代表二进制class文件 由java文件编译而成 src代表源码 java源码
  • 天池数据竞赛docker提交操作学习

    天池数据竞赛docker提交操作学习 由于最近天池的比赛都要求使用docker来提交结果 所以在此记录一下docker提交到天池的整个流程 目前正在做的 全球人工智能技术创新大赛 热身赛二 比赛链接 https tianchi aliyun
  • 高效计算基础与线性分类器

    七月算法5月深度学习班课程笔记 No 2 1 深度学习与应用 1 图像上的应用 可以根据图片 识别图片的内容 描述图像 模仿人的创造性生成画作 相册自动归类等 2 NLP上的应用 用RNN学习某作家的文笔风格进行写作 学习代码写作等 下图为
  • 使用 gperftools 分析程序cpu性能

    一 gperftools 简介 gperftools 是 google 开源的一组套件 提供了高性能的 支持多线程的 malloc 实现 以及一组优秀的性能分析工具 二 安装 gperftools 2 1 下载源码 从 gperftools
  • DockerCompose的安装以及使用

    docker compose的安装以及使用 docker compose的定义 docker compose是docker容器的单机编排工具 它是一个可以管理多容器的工具 比如可以解决多容器之间的依赖关系 比如启动nginx前端服务的时候会
  • redis使用Jackson2JsonRedisSerializer序列化问题

    一 spring boot 集成Redis方法 依赖
  • /proc/modules分析

    参考 redhat linux deployment guide 5 2 21 proc modules This file displays a list of all modules loaded into the kernel Its
  • Qt5实现与单片机ATS89S51通信

    Qt实现与单片机直接的通信上位机 单片机代码 测试环境 项目目标 实现效果 关键通信类 QSerialport 总结 这是我大二下学期的单片机课设做的一个小项目 实现上位机与下位机之间的通信 测试环境 开发环境 Qt5 96 Mingw32
  • Acwing 890. 能被整除的数

    注 S 表示集合S中的元素个数 对于 S1 U S2 U S3 U U Sn 中的任意一个元素x 证明在等式右侧只被计算一次 上述证明中假设x属于k个集合 推出x会被计算的次数 注 Si是指1 n中i的倍数的个数 使用容斥原理的时间复杂度是
  • 3年c/c++开发总结(二):书籍[1]

    对3年来学习中书籍的整理 评价 主要为c c 方面 分数为个人意见 虽然大家都知道 但还是强调下 免得口水 分1 5 5为最高 格式 英文名 中文名 作者 出版社 个人评价 评分 无译者说明是因为建议看原版 p s 国产图书要努力 因看过的
  • (Ext基础篇) 表单与输入控件

    FormPanel和BasicForm详解 我们制作一个Ext form FormPanel 然后在里面设置field 顾名思议 FormPanel是Ext Panel的一个子类 可以对其执行各种Panel操作 实际上 表单的功能是在Ext
  • vue滚动插件:vue-seamless-scroll

    地址 使用 vue seamless scroll 使用方法 1 下包 yarn add vue seamless scroll 2 局部导入 import vueSeamlessScroll from vue seamless scrol
  • 搜索指定站点和指定文档类型

    对于像我这个不生产代码 只是代码搬运工的程序员来说 搜索引擎是必不可少的 遇到问题 搜索一下 基本都能找到答案 但有时 搜索出来的答案千篇一律 而且垃圾网站一波波 这时就要指定搜索某些 网站 如csdn 1 指定站点 在搜索框里面输入 关键
  • HTTP状态码总结

    为了更好地了解各个状态码代表的意思 做了一个总结 在实际的工作中 主要涉及到的还是200 404 500等 1 HTTP状态码分5大类 状态码 类别 100 199 信息性状态码 200 299 成功状态码 300 399 重定向状态码 4
  • 如何在 wxPython 中创建多个工具栏

    在GUI编程领域 wxPython已经成为一个功能强大且通用的库 使开发人员能够轻松制作令人惊叹的图形用户界面 在众多基本组件中 工具栏在为用户提供对各种功能的快速访问方面发挥着至关重要的作用 在本教程中 我们将深入探讨使用 wxPytho