wxpython使用简介_wxpython简介

Python

​ Python是一种成功的脚本语言,它最初是由Guido van Rossum开发的。它于1991年首次发布。Python的灵感来自于ABC和Haskell编程语言。Python是一种高级的、通用的、多平台的、解释型的语言。有人更喜欢称它为动态语言。它很容易学习。Python是一种极简主义语言。它最明显的一个特点是它不使用分号也不使用括号。Python使用缩进代替。今天,Python由全球一大批志愿者维护。

​ 对于创建图形用户界面,Python程序员可以在三个不错的选项中选择。PyGTK、wxPython 和 PyQt。

wxPython模块

​ wxPython是一个用于创建桌面GUI应用程序的跨平台工具箱。wxPython的主要作者是Robin Dunn。wxPython是wxWidgets的封装器,而wxWidgets是一个成熟的跨平台C++库,开发者可以通过wxPython在Windows、Mac和各种Unix系统上创建应用程序。wxPython由五个基本模块组成。

139638e6c548154d35bf8374f58830eb.png

​ 控件模块提供了图形应用程序中常见的小部件。例如一个按钮,一个工具栏,或者一个笔记本。Widget在Windows操作系统下被称为控件。Core模块由开发中使用的基本类组成。这些类包括Object类,它是所有类的母类,Sizer,用于widget布局,Events,基本的几何类如Point和Rectangle。图形设备接口(GDI)是一组用于绘制到widget上的类。这个模块包含了用于操作字体、颜色、笔刷、笔或图像的类。Misc模块包含各种其他类和模块功能。这些类用于记录,应用程序配置,系统设置,与显示器或操纵杆一起工作。窗口模块由各种窗口组成,这些窗口构成了一个应用程序,例如一个面板,一个对话框,一个框架,或一个滚动窗口。

wxPython API

​ wxPython API 是一组方法和对象。控件是GUI应用程序的基本构件。在Windows下,widget称为控件。我们可以大致将程序员分为两类:他们要么编写应用程序,要么编写库。在我们这里,wxPython是一个库,应用程序员用它来编写应用程序。从技术上讲,wxPython是在一个名为wxWidgets的C++ GUI API上的封装器。所以它不是一个本地 API,也就是说,它不是直接用 Python 编写的。

​ 在 wxPython 中,我们有很多小控件。这些可以分为一些组。

基础控件

20b8b795997efc48d235dff2052010cb.png

​ 这些控件为派生控件提供了基本功能。它们被称为祖先。它们通常不被直接使用。

顶级控件

507fa35b1f9e1e4467e9208828a7649c.png

​ 这些控件相互独立存在

容器

8013b8607789ce3230f5c4b0bb7feeb9.png

​ 容器中包含其他控件

动态控件

59754a04b5c42d3f5dd884020c191efb.png

​ 这些控件可以由用户编辑。

静态控件

a5b20acb2d6b86903641968db00cfd60.png

​ 这些控件显示信息。它们不能被用户编辑。

其他控件

aef56d82f8d820e18dd6df444d15b5c0.png

​ 这些控件在应用程序中实现了状态栏、工具栏和按键栏。

继承

​ 在wxPython中,控件之间有一种特殊的关系。这种关系是通过继承来发展的。继承是面向对象编程的一个重要部分。小控件形成了一个层次结构,小控件可以继承其他小控件的功能。现有的类被称为基类、父类或祖类。继承的控件我们称之为派生控件或者子控件。

7396cc1c287b0545bfbe8749f9887710.png

​ 假设我们在应用程序中使用一个按钮控件。按钮控件继承了四个不同的基类,最接近的类是wx.Control类。一个按钮控件是一种小窗口。所有出现在屏幕上的控件都是窗口,因此它们继承自wx.Window类。有一些对象是不可见的。例如 sizers, 设备上下文或 locale 对象。也有一些类是可见的,但它们不是窗口。例如,colour对象、caret对象或locale对象。并非所有的widgets都是控件。例如wx.Dialog不是控件的一种。控件是放置在其他称为容器的widgets上的widgets,。这就是为什么我们有一个单独的wx.Control基类。

​ 每个窗口都可以对事件做出反应。按钮部件也是如此。通过点击按钮,我们启动了wx.EVT_COMMAND_BUTTON_CLICKED事件。按钮小组件通过wx.Window类继承了wx.EvtHandler。每个对事件做出反应的widget都必须继承wx.EvtHandler类。最后,所有的对象都继承自wx.Object类。

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

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

相关文章

计算机科学与python编程导论_计算机科学入门和使用Python编程

你将学到什么A Notion of computationThe Python programming languageSome simple algorithmsTesting and debuggingAn informal introduction to algorithmic complexityData structures课程概况This course is the first of a two-course sequence: Introduction to Compute…

电脑4次连续故障音_格力空调电子膨胀阀故障判定与“E6”处理方法

一、电子膨胀阀常见故障原因电器电子膨胀阀是一种利用电子控制器通过电缆向线圈发出脉冲控制信号,控制施加于膨胀阀上的电压或电流,从而控制阀针的动作实现阀口流通面积改变达到流量自动调节目的的节流器件,是空调器的重要部件之一&#xff0…

mysql+性能+计算列_MYSQL性能优化的最佳20+条经验

当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索&…

ClickHouse 入门与实战教程

目录 1. ClickHouse 简介 什么是 ClickHouse? ClickHouse 的优势和特点 适用场景 2. 安装 ClickHouse 3. ClickHouse 的基本概念 4. ClickHouse 的基本操作 创建数据库和表、插入和查询数据 使用 MergeTree 引擎处理时序数据 管理分区 创建带有分区的 Mer…

python脚本自动消除安卓版_python脚本中appium的自启动自关闭

前提:已安装appium命令行版本将appium的启动及其关闭直接写在脚本中,运行起来会方便很多创建startAppiumServer.bat 和 stopAppiumServer.bat文件,然后文件存放在运行的包下面注意点:调用startAppiumServer.bat 和stopAppiumServe…

sid图像数据_实战材料信息学:使用skimage处理扫描电子显微镜(SEM)图像数据

算开个头,不算特别实战扫描电子显微镜,材料开发不可缺少的分析仪器。原理就不详述了。材料的形貌,具体长什么样的都可以看得很清楚。材料表面的形貌很多情况下会和材料的物性产生直接关系,比如说可以从SEM看出粒子的直径分布&…

python生成器 图片分类_Python内置类型(6)——生成器

上节内容说到Python的for语句循环本质上就是通过调用Iterable可迭代对象的__iter()__方法获得一个Iterator迭代器对象,然后不断调用Iterator迭代器对象__next()__方法实现的。Iterator迭代器对象则是一个需要实现__iter__()和__next__()两个迭代器协议方法的对象。python中生成…

java 把方法当参数传递_java 中 如何将“一个类的方法 ”作为参数传到“另一个类的方法”中...

展开全部在java中这是没有办法做到的,因e5a48de588b662616964757a686964616f31333337396336为java不是函数式编程语言,不过可以通过传递一个接口来实现。下面解说java如何模拟:先定义一个接口:interface MethodInterface{//这个方法假如就是你…

轮询数据库 java_谁做过定时任务,轮询查询数据。

一、增加所依赖的JAR包1、增加Spring的Maven依赖org.springframeworkspring-webmvc3.0.5.RELEASE2、增加Quartz的Maven依赖org.quartz-schedulerquartz1.8.4二、增加定时业务逻辑类public class ExpireJobTask {/** Logger */private static final Logger logger LoggerFactor…

arcgis制作空间变化图怎么做_听说如果做数据分析不用GIS,会被开?

Q你有没有遇到这样的情况?身边的同事或同学经常说什么高程图、坡向图、坡度图、生态水文图、热力密度图、大数据算法,而自己却一无所知,心里感到特别的慌啊。文末附ArcGIS最新版及超强数据神器 很多人会说,“设计师是感性的&#…

仅完成部分的readprocessmemory或write_王者荣耀:三种李小龙获取方式!无需完成任务、28号即可兑换...

哈喽大家好!我是你们的小菜鸡“荣耀急先锋”王者荣耀五周年庆限定皮肤李小龙活动已经开始啦!大家有参加了吗?或者说对这个活动不太理解,针对这些小伙伴菜鸡今天就简单的跟大家讲讲李小龙皮肤活动的规则,让我们一起看看…

uuid java 重复_Java中使用UUID工具类生成唯一标志防止重复

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;import java.util.concurrent.ThreadLocalRandom;/*** 提供通用唯一识别码(universally unique identifier)(UUID)实现**/publ…

优秀ppt作品范例_首次公开|锐普的内部PPT配色库

每次发锐普的作品,总会有小伙伴们问:这么漂亮的配色到底是怎么做的呢?今天我在锐普内部的资源库发现一个超级宝贝——锐普内部的PPT配色库,1008张超精彩PPT配色范例。我的天,原来设计部竟然还藏着这种宝贝!…

java get null_java 获取对象中为null的字段实例代码

下面一段简单的代码给大家分享java 获取对象中为null的字段,具体代码如下所述:private static String[] getNullPropertyNames(Object source) {final BeanWrapper src new BeanWrapperImpl(source);java.beans.PropertyDescriptor[] pds src.getPrope…

linux rz sz 安装_Windows与Linux文件传输之lrzsz工具

请关注本头条号,每天坚持更新原创干货技术文章如需学习视频,请查看本头条号简介,免费在线观看学习视频1. lrzsz工具简介Windows向Linux传输文件,最简单的方法是使用rz和sz命令。当然用有其他的方法,比如通过ssh(winscp…

java游戏重新开始_问题1:java问题--某局小游戏结束后怎么重新开始?

有个问题,想了好久没解决,上网找了下,貌似也没找到好的解决方法(谷歌暂时没上去),现在这里写下来吧:最近在写一个五子棋的小游戏,也算是刚刚开始java入门的一个作品了吧,刚刚完成到人人对战(当然…

python编码器下载_Python Code128编码器

这是一个可以接受的答案,所以我将原始代码留在下面。但我更喜欢这种精致。在def list_join(seq): Join a sequence of lists into a single list, much like str.joinwill join a sequence of strings into a single string.return [x for sub in seq for x in sub]…

java url后面带sessionid_Spring Mvc boot解决静态url带jsessionid问题

1.jsessionid是什么?Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。2.那么有什么问题?首先这是一个保险措施 因为Session默认是需要Cookie支持的,但有些客户浏览器是关闭Cook…

python二分查找算法_如何使用python的二分查找算法

如何使用python的二分查找算法发布时间:2020-11-18 09:27:29

retryexec.java 94_解决feign调用接口不稳定的问题

我就废话不多说了,大家还是直接看代码吧~Caused by: java.net.SocketException: Software caused connection abort: recv failedat java.net.SocketInputStream.socketRead0(Native Method)at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)a…