wxpython制作表格界面_[Python] wxPython 菜单栏控件学习总结(原创)

1、总结

1、大体创建过程

1、创建一个 菜单栏 : menuBar = wx.MenuBar()

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMxNDMwODAzLTEwNDk2NjA2NjQucG5n.jpg

相当于这个白色地方,没有File这个菜单

2、创建 菜单 : fileMenu = wx.Menu()

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMxNTUxODM0LTQwMTI1MDU0Ni5wbmc=.jpg

这两个不是直接“用的”,叫菜单。既用来分类其他 菜单项 的文件夹样

3、创建 菜单项 : newItem = wx.MenuItem()

例如上图的 New Copy Cut Paste Radio_One 等等等等。

这些可以直接“点”的(看作按钮)的叫做 菜单项。

创建的时候需要分配 id (int 整数),到时候菜单事件处理的时候需要通过传递的 id (event.GetId())来判断单击的按钮。

4、将 菜单项 添加到 菜单中 : fileMenu.AppendItem(newItem)

这样当我们单机 File 的时候就会打开这个"文件夹"

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMyOTUyMTc4LTUwNTQxMTgwNC5wbmc=.jpg

并且展示内容,添加多少就展示多少,并且按添加的顺序展示

5、将 菜单 添加到 菜单栏 中 : menuBar.Append(fileMenu, title = "File")

之前我们只是构建了一个上图红框+File菜单 的一个整体对象:fileMenu。

然后我们要把这个 菜单对象 添加到菜单栏中。

6、将该 菜单栏 设置为我们窗口框架的“菜单栏” : self.SetMenuBar(menuBar)

即将之前建立的 菜单栏对象 放到窗口上去。

7、绑定 菜单事件 : self.Bind(wx.EVT_MENT, self.menuHandler)

调用 Bind() 这个绑定事件的函数,因为其他组件 比如按钮 编辑框 都有事件。

所以这里的 wx.EVT_MENT 是表示绑定的是 菜单事件。

menuHandler() 是自定义函数 用来菜单事件。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTMzODU1MjI1LTEzNDgzMzQzODEucG5n.jpg

id = event.GetId() 用来判断单击的 菜单项。

函数参数名称:event 不能变,只能是这个单词。

8、窗口框架的处理 : 与菜单栏无关了

例如 调整大小、出现位置、是否可见

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM0MTQyMzM0LTc1MTEwMTM2Mi5wbmc=.jpg

2、各项详解(参考其他)

1、用到的 class :

菜单栏 : wx.MenuBar 类

wx.MenuBar()

wx.MenuBar(n, menus, titles, style)

有一个参数的构造函数,此外还有一个默认的。

参数“n”表示的菜单的数目。Menu是菜单和标题的数组和字符串数组。如果style参数设置为wx.MB_DOCKABLE,菜单栏可以停靠。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM1NjI2MTE1LTM4MTE0MTczNC5wbmc=.jpg

菜单 : wx.Menu 类

wx.Menu类对象是一个或多个菜单项,其中一个可被用户选择的下拉列表。

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTM1NjAwOTkwLTE4NjcwNDUyOS5wbmc=.jpg

该开始 new 菜单对象的时候 只要 fileMenu = wx.Menu() 即可

之后添加菜单项目的时候,可直接使用 Append() 函数添加,或 wx.MenuItem 类的一个对象被追加。

wx.Menu.Append(id, text, kind)

Item = Wx.MenuItem(parentmenu, id, text, kind)

wx.Menu.Append(Item)

菜单项:wx.MenuItem 类

当我们 new 菜单项对象时 需要填几个参数。

newItem = wx.MenuItem(parentMenu, id, text, kind)

其中 :

parentMenu 为其 菜单的对面,比如上文提到的 newMenu 菜单项的 parentMenu 为 fileMenu

id 为该菜单项的 id 到时候处理 菜单项时间的时候需要用到滴

text 为这个菜单项的名称

kind 为该菜单项的类型

①注册 快捷键的方法 :参数text = "名称/t快捷键"

比如 text = "Quit/tCtrl+Q"

这样就注册了 Ctrl + Q 的快捷键

②其他类型菜单项的方法

菜单项有 3 种:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMTE4MzY5LzIwMTcwOC8xMTE4MzY5LTIwMTcwODIwMTQxNjA5MDIxLTQxMjAxMjUyLnBuZw==.jpg

只需要 参数 kind = 相关类型常量即可

2、感想

这个里面的很详细,且例子经典。

o.o 要是先看不懂,就敲抄一边会好很多。

关于wxPyton 中菜单栏的运用的,以下代码能够很好的展示相关的操作方法。

3、样例代码

#coding:utf-8

#author:Twobox

import wx

class Mywin(wx.Frame):

def __init__(self, parent, title):

super(Mywin, self).__init__(parent, title = title)

self.InitUI()

def InitUI(self):

#创建一个菜单栏

menuBar = wx.MenuBar()

#创建一个菜单 1

fileMenu = wx.Menu()

#创建一个菜单项 1-1

newItem = wx.MenuItem(fileMenu, id = wx.ID_NEW, text = 'New', kind = wx.ITEM_NORMAL)

fileMenu.AppendItem(newItem)

#添加一行线

fileMenu.AppendSeparator()

#创建一个子菜单 1-2

editMenu = wx.Menu()

#创建三个子菜单的菜单项目 1-2-1 and 1-2-2 and 1-2-3

cutItem = wx.MenuItem(editMenu, id = 122, text = "Cut", kind = wx.ITEM_NORMAL)

copyItem = wx.MenuItem(editMenu, id = 121, text = "Copy", kind = wx.ITEM_NORMAL)

pasteItem = wx.MenuItem(editMenu, id = 123, text = "Paste", kind = wx.ITEM_NORMAL)

editMenu.AppendItem(copyItem)

editMenu.AppendItem(cutItem)

editMenu.AppendItem(pasteItem)

#把子菜单 1-2 添加到菜单 1 中

fileMenu.AppendMenu(wx.ID_ANY, "Edit", editMenu)

# 添加一行线

fileMenu.AppendSeparator()

#添加两个单选框 1-3 and 1-4

radio1 = wx.MenuItem(fileMenu, id = 13, text = "Radio_One", kind = wx.ITEM_RADIO)

radio2 = wx.MenuItem(fileMenu, id = 14, text = "Radio_Two", kind = wx.ITEM_RADIO)

fileMenu.AppendItem(radio1)

fileMenu.AppendItem(radio2)

#PS.单选框 只在自己区域之间(两行线之间) 相互作用

# 添加一行线

fileMenu.AppendSeparator()

#添加一个 可选中 的菜单项 1-5

fileMenu.AppendCheckItem(id = 15, item = "Check")

#添加一个 菜单项 1-6 并注册快捷键

quit = wx.MenuItem(fileMenu, id = wx.ID_EXIT, text = "Quit\tCtrl+Q", kind = wx.ITEM_NORMAL)

fileMenu.AppendItem(quit)

#将 fileMenu 菜单添加到菜单栏中

menuBar.Append(fileMenu, title = 'File')

#设置窗口框架的菜单栏为 menuBar

self.SetMenuBar(menuBar)

#绑定事件处理

self.Bind(wx.EVT_MENU, self.menuHandler)

#让其在屏幕中间打开调整大小展示

self.SetSize((300,400))

self.Centre()

self.Show()

def menuHandler(self, event):

id = event.GetId()

if id == wx.ID_NEW:

print("NEW")

if id == wx.ID_EXIT:

exit(0)

if __name__ == "__main__":

ex = wx.App()

Mywin(None, 'Menu - Test')

#Mywin(None, 'Menu - Test') #可以同时打开两个窗口 果然体现面向对象的程序开发思想

ex.MainLoop()

2017-08-20 14:21:26

[Python] wxPython 基本控件 (转)

转自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.静态文本控件 wx.StaticText(parent, id, label, pos= ...

[Python] wxPython 编辑框组件学习总结 (原创)

1.总结 1.常用4种 编辑框 的构造 1.普通编辑框 单行输入的简单编辑框 (?为所在框的对象,同下) self.textBox = wx.TextCtrl(parent = ?) 2.密码编辑框 ...

python之Tkinter控件学习

转载自  http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...

Python Tkinter 基础控件学习

# -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...

wxPython控件学习之wx.grid.Grid 表格控件

wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...

转)delphi chrome cef3 控件学习笔记 (二)

(转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...

IOS学习笔记(四)之UITextField和UITextView控件学习

IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

DevExpress控件学习总结(转)

DevExpress控件学习总结   1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹 ...

Python Tkinter基础控件入门实例

分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...

随机推荐

mac的webdriver自动化

下载webdriver-chrome的连接:http://chromedriver.storage.googleapis.com/index.html

MVVM小记

这篇小记源自于codeproject上的一篇文章 http://www.codeproject.com/Articles/100175/Model-View-ViewModel-MVVM-Explai ...

深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算

布尔代数上的位运算 布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的. 我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的.这四种运 ...

JS中的集中页面跳转的方法

第一种:   

style中position的属性值具体解释

Position的英文原意是指位置.职位.状态.也有安置的意思.在CSS布局中,Position发挥着非常关键的数据,非常多容器的定位是用Position来完毕. Position属性有四个可选值,它 ...

渲染函数render和函数式组件

vnode对象 vnode对象包括(vnode并不是vue实例,而是vue实例中渲染函数render执行后生成的结果) this.tag = tag // 当前节点标签名 this.data = da ...

cookie、localStorage、sessionStorage的区别

localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 共同点:sessionStorage.localStorage和cooki ...

Visual Studio 2017 + Python3.6安装scipy库

Windows10下安装scipy很麻烦,直接在命令行下使用pip install scipy无法安装,但可以借助VS2017的集成环境来安装. (1)首先在Visual Studio Install ...

How to calculate elapsed / execute time in Java

How to calculate elapsed / execute time in JavaIn Java, you can use the following ways to measure el ...

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

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

相关文章

android 8三星note8,信息太多很烦琐?告诉你三星Note8有妙招

不知从何时开始,我们眼前的信息变得丰富而繁杂。简洁的新闻无需经过报纸过滤,发生数分钟已经城皆知。预测晴雨也无需依靠天气先生,点亮手机即可洞悉风雨。生活在信息时代的我们仅用几英寸的窗口观察世界,信息的洪流难免会遮蔽眼前…

python做excel表格教程视频_基于Python实现excel表格读写

首先安装对应的xlrd和xlwt 打开cmd命令窗口输入pip install xlrd和pip install xlwt就可以安装。之后输入pip list检查是否成功配置:xlrd操作# 接下来就是常用的语法操作: excel_data xlrd.open_workbook(文件路径)#得到对应的工作表 sheet excel_data…

虚无鸿蒙哪个厉害,【图说鸿蒙】鸿蒙设定之七柱神(五)

原标题:【图说鸿蒙】鸿蒙设定之七柱神(五)七柱神玄冥神飞来流去本无心,无空无我混天尘。幻作人形深简出,不是老妪是海神。玄冥神 虚无荒海司掌海洋、流动之力 神威之色为蓝执掌海洋、流动之力的神,是神道“熵”的最高掌控者&#…

java lambda 排序_Java8特性:Lambda表达式之概念篇

Java自诞生已经有十几个年头了,目前也已经发布了第十三个大版本,其中Java8是常用的版本中最新的一个版本。而Java8最大的特性就是:Lambda表达式、函数式接口和Stream流。本篇我只介绍Lamda表达式的概念以及简单使用,至于别的我打算…

jq获取表格里的checkbox_Python抓取网页表格(一)

Python有很多包可以抓取数据,如selenium、requests、scrapy、pandas,每个包都有其适用性,个人认为在抓取数据时,代码简洁性和数据获取的准确性是需要考虑的因素,时间快慢倒不用太在意,毕竟用python抓数据本…

html一个空格多少像素,一个空格占几个字符?

一个空格通常占2个字符,但有些特殊情况占用3个字符。在程序中,空格占用的字符数取决于程序使用的字符集,如:1、使用多字节字符集时,半角空格占用1个字节,全角空格占用2个字节。2、使用Unicode字符集时&…

各种抠图动态图片_不用手。自动、智能抠图,图片去背景

BgEraser 是一款基于 AI 的自动、智能图片去背景工具,无需勾选可用、可删除区域,上传图片,立即下载即扣图完成的图片。AppinnBgEraser 真是懒人的福音。在此之前,比如很好用的在线去背景服务 remove.bg,是需要用户手动…

bigdecimal 保留两位小数_Python的保留小数及对齐

Python的保留小数:方法1:用round函数(有坑)。median 12.3004886print(round(median, 2)) # 保留两位小数print(round(median, 3)) # 保留三位小数print(round(median, 4)) # 保留四位小数运行结果:12.312.312.3005可以看出Python中的r…

分布式光伏补贴_四川:2020年起工商业分布式光伏已无补贴

来源:四川省发改委日前,四川省发改委发布《四川省分布式光伏建设管理相关政策》,对该省分布式光伏发电项目定义、分类、备案程序、需要国补的项目相关政策进行了梳理。值得注意的是,文件明确,自2020年起,四…

用计算机玩游戏最简单的方法,如何制作电脑简易命令小游戏

满意答案sylvia10172019.01.20采纳率:48% 等级:7已帮助:460人简单的Dos小游戏开始学习java,这周只简单的学习了C的基本语法:输入输出,判断循环,因此用这些东西在java上瞎写了一个DOS小游戏。…

pandas filter_数据分析之Pandas操作(2)

接着数据分析之Pandas操作(1)的介绍,本次介绍在实际应用场景中几个常用的函数。还是以titanic生存数据为例,本次需要导入pandas 、numpy 、scipy三个工具包。import pandas as pdimport numpy as npfrom scipy.stats import zscoretrain_data pd.read_c…

ios 隐藏app的插件_等了5年终于复活,iPhone上最干净好用的微博App

来,先跟小虎妞一起回忆下2013年的微博客户端。(图源水印)那时候,首页还是按时间顺序来的,也没有赴美产子、老爷夫人知道错了的广告。后来,随着微博一次次改版,客户端越来越臃肿,第三方微博客户端像雨后春笋…

python调用node_在node中执行python脚本

Node.js多进程基础 Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发。这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。 每个子进程总是带有三个流对象:child.stdin, child.stdout 和child.stderr。他们可能…

docker配置 nacos_Nacos - 阿里开源配置中心

这里是喵了个咪的后端技术分享,觉得写的不错。点个赞,转发一下,关注一下。本文载于个人原创技术博客http://w-blog.cn,转载请注明出处,非法转载抄袭将追究其责任。配置中心相信大家都有听过,zookeeper、apo…

jdbc获取mysql第二行表信息_【奇技淫巧】MySQL另类方法获取元数据信息

问:在进行MySQL注入时,我们通常是通过information_schema元数据来获取表名、字段名信息,从而读取相应数据。但是如果waf或其它过滤了information_schema关键字,那么还有什么方法可以读取元数据信息呢?答:从…

vscode使用sass_推荐7 个 极好用的VS Code 插件

你知道将高级开发人员与普通开发人员区分的条件是什么吗?没错,是所使用的工具,俗话说,"工欲善其事必先利其器", 拥有正确的工作工具可以让开发人员的生活变得更加轻松,甚至想写一辈子代码。巧的的…

挖掘城市ip_不断挖掘IP价值,紧抓乐园经济新机遇!

当一个国家的人均GDP达到5,000美元时,其旅游度假经济将进入成熟阶段。按照2018年末人口总数计算,我国人均GDP接近1万美元,近年来,越来越多的主题乐园落户中国。乐园的选址、运营有颇多讲究。对主题乐园而言,依托大中型…

pixel和毫米怎么换算_赶紧收藏!小学阶段所有公式、单位换算、数量关系

小学阶段会接触到很多公式,这些公式都是学习中必须要记忆的,笔者特意总结了小学一到六年级所有的公式、单位换算、数量关系、难题知识。孩子只要掌握了这四大知识重点,考试轻轻松松拿高分!一、数量关系计算公式1、单价数量&#x…

相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!

喜欢拍照的朋友们是不是有这样一个烦恼,那就是手机里拍了很多照片,当你想找某一张照片时你得在手机里翻半天,费时费力,那么今天我就来给大家解决这个烦恼,手机相册是手机中必不可少的,那当我们手机照片太多…

学校计算机数据采集处理系统,中学化学计算机数据采集处理系统实验室装备

中学化学计算机数据采集处理系统实验室装备配置方案一、基础型配置(31套:教师1套,学生30套(2学生/组,以每班60学生分组)),每套配置标准如下:序号 名称 型号1 数据采集器 SJ-SJCJQ2 南师大分析软件 NJSFDX-V33 电流传感…