创建应用程序

news2024/10/7 10:12:58

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

使用wxPython之前,先来了解两个基础对象:应用程序对象和顶级窗口。

应用程序对象管理主事件循环,主事件循环是wxPython程序的动力。如果没有应用程序对象,wxPython应用程序将不能运行。

顶级窗口通常用于管理最重要的数据,控制并呈现给用户。

图3显示了这两个基础对象和应用程序的其他部分之间的关系。

图3  wxPython应用的基本结构

在图3中,这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作,并接受事件通知以便改变显示。

1  创建一个wx.App的子类

在开始创建应用程序之前,先来创建一个没有任何功能的子类。创建和使用一个wx.App子类,需要执如下4个步骤:

l  定义这个子类。

l  在定义的子类中写一个OnInit()初始化方法。

l  在程序的主要部分创建这个类的一个实例。

l  调用应用程序实例的MainLoop()方法。这个方法将程序的控制权转交给wxPython。

创建一个没有任何功能的子类,具体代码如下:

# -*- coding:utf-8 -*-

import wx             # 导入wxPython

class App(wx.App):

    # 初始化方法

    def OnInit(self):

        frame = wx.Frame(parent=None, title='Hello wyPython')  # 创建窗口

        frame.Show()         # 显示窗口

        return True          # 返回值

if __name__ == '__main__':

    app = App()             # 创建App类的实例   

    app.MainLoop()          # 调用App类的MainLoop()主循环方法

上述代码中,定义了一个子类App(),它继承父类wx.App,子类中包含一个初始化方法OnInit()。在主程序中创建类的实例,然后调用MainLoop()主循环方法。运行结果如图4所示。

图4  创建子类

2  直接使用wx.App

通常,如果在系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App。这个类提供了一个最基本的OnInit()初始化方法,具体代码如下:

# -*- coding:utf-8 -*-

import wx                # 导入wxPython

app   = wx.App()         # 初始化wx.App类

frame = wx.Frame(None,title='Hello wyPython')  # 定义了一个顶级窗口

frame.Show()             # 显示窗口

app.MainLoop()           # 调用wx.App类的MainLoop()主循环方法

上述代码中,wx.App()初始化wx.App类,包含了OnInit()方法,运行结果与图4相同。

3  使用wx.Frame框架

在GUI中框架通常也称为窗口。框架是一个容器,用户可以将它在屏幕上任意移动,并可对它进行缩放,它通常包含标题栏、菜单等。在wxPython中,wx.Frame是所有框架的父类。当你创建wx.Frame的子类时,子类应该调用其父类的构造器wx.Frame.__init__()。wx.Frame构造器的语法格式如下:

wx.Frame(parent, id=-1, title="", pos=wx.DefaultPosition, size=wx.DefaultSize,

         style=wx.DEFAULT_FRAME_STYLE, name="frame")

参数说明:

l  parent:框架的父窗口。如果是顶级窗口,这个值是None。

l  id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。

l  title:窗口的标题。

l  pos:一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。

l  size:一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。

l  style:指定窗口的类型的常量。可以使用或运算来组合它们。

l  name:框架内在的名字。可以使用它来寻找这个窗口。

创建wx.Frame子类的代码如下:

# -*- coding:utf-8 -*-

import wx                       # 导入wxPython

class MyFrame(wx.Frame):

    def __init__(self,parent,id):

        wx.Frame.__init__(self,parent,id, title="创建Frame",pos=(100, 100), size=(300, 300))

if __name__ == '__main__':

    app = wx.App()                              # 初始化应用

    frame = MyFrame(parent=None,id=-1)      # 实例MyFrame类,并传递参数  

    frame.Show()                            # 显示窗口

    app.MainLoop()                          # 调用MainLoop()主循环方法

上述代码中,在主程序中调用MyFrame类,并且传递2个参数。在MyFrame类中,自动执行__init__()初始化方法,接收参数。然后调用父类wx.Frame的__init__()初始化方法,设置顶级窗口的相关属性。运行结果如图5所示。

图5  使用wx.Frame框架

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

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

相关文章

JavaScript的运算符(算术、比较、赋值、逻辑、条件)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

直播预告|就在明天,解锁半导体测试全攻略

随着5G、物联网、人工智能和新能源汽车等新兴产业的快速发展,半导体测试设备与服务的市场需求将更加多样化。IC测试作为产品良率和成本管理的重要环节,行业测试工程师面临着降低测试成本和提高产品良率的强劲压力。如何提升测试的质量与效率,…

Spring Boot + Mybatis Plus实现登录注册

Spring Boot 实现登录注册 1. 注册 业务逻辑 客户端输入注册时需要的用户参数,比如:账户名、密码、确认密码、其他服务端接收到客户端的请求参数进行校验,然后判断是否有误,有误的地方就将错误信息抛出将密码进行加密之后存储到…

光伏项目管理——数字化改革

随着全球对可再生能源的迫切需求以及环保意识的日益增强,光伏产业作为清洁能源的重要组成部分,正迎来快速发展的黄金时期。然而,传统的光伏项目管理方式已逐渐无法满足现代化、高效化的需求,数字化改革成为了行业发展的必然趋势。…

什么是无头浏览器以及其工作原理?

如果您对这个概念还不熟悉,那么使用无头网络浏览器的想法可能会让您感到不知所措。无头浏览器本质上与您熟悉的网络浏览器相同,但有一个关键区别:它们没有图形用户界面 (GUI)。这意味着没有按钮、选项卡、地址栏或视觉显示。 相反&#xff0c…

Tuxera NTFS for Mac 2023软件:超级详细安装步骤(最新版软件下载)

软件简介: 在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件。当您获得一台新 Mac 时,它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac,您需要一个附加的 NTFS 驱动程序。…

checkbox表单校验 至少选中一个Checkbox , 否则会报错

项目背景 : react ant 需求 : 需实现至少选中一个Checkbox , 否则会报错 需求如下 : 注意 : Input, Select, DatePicker可以直接处理Form.Item的验证规则 , 但Checkbox不行 , 需自定义验证规则 实现 : // 自定义的checkbox校验规则--星期const validateAtLeastOneCheckbo…

CP AUTOSAR标准中文文档链接索引

AUTOSAR标准的核心组件包括通信、诊断、安全等,这些组件通过模块化结构进行组织。系统被划分为多个模块,每个模块负责特定的功能。模块之间通过接口进行通信,接口定义了模块之间的交互规则。AUTOSAR标准支持模块的配置,可以根据不…

加密经济时代:Web3如何改变我们的生活方式

随着区块链技术的蓬勃发展和加密经济的兴起,Web3正逐渐成为数字化时代的主流趋势之一。作为下一代互联网的代表,Web3以其去中心化、安全可信的特性,正在改变着我们的生活方式。本文将深入探讨加密经济时代下,Web3如何改变了我们的…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景: 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】: 形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现 过程: 问题概述: 简单…

鸿蒙开发文件管理:【@ohos.securityLabel (数据标签)】

数据标签 该模块提供文件数据安全等级的相关功能:向应用程序提供查询、设置文件数据安全等级的JS接口。 说明: 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import security…

C# WinForm —— 34 ToolStrip 工具栏 介绍

1. 简介 工具栏 ToolStrip,一般紧贴在菜单栏下面 2. 属性 属性解释(Name)控件ID,在代码里引用的时候会用到Enabled控件是否启用Dock定义要绑定到容器的控件边框,默认是topAnchor定义某个控件绑定到的容器的边缘。当控件锚定到某个边缘时&a…

C++基础编程100题-009 OpenJudge-1.3-07 计算多项式的值

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/07/ 描述 对于多项式 f ( x ) a x 3 b x 2 c x d f(x) ax^3 bx^2 cx d f(x)ax3bx2cxd 和给定的a, b, c, d, x,计算f(x)的值。 输入 输入仅一行,包含5个实数,分…

LeetCode | 66.加一

这道题有多个思路,可以依次取数组的每一位,乘10后加下一位,直到最后一位,就得到我们数组所表示的数字,然后加一,然后把新得到的数字再转化为对应的数组,我的做法是直接取数组的最后一位&#xf…

redis 07 订阅

订阅频道 订阅模式: 解释:

MSPM0L1306时钟树

图显示了MSPM0Lxx系列设备的顶级时钟树。此图显示映射 振荡器(源)和时钟(目的地)之间,以及的SYSCTL寄存器位字段 选择多路复用器。请注意,并非所有设备都具有图所示的所有时钟系统功能。

【Linux】模拟实现一个简单的日志系统

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

权限维持--小结

权限维持 windows 域环境 基于验证 DLL 加载-SSP 基于验证 DLL 加载-HOOK 基于机制账号启用-DSRM 基于用户属性修改-SID-history 基于登录进程劫持-Skeleton-Key 单机 基于用户-隐藏用户 基于服务 TGT-黄金白银票据 基于软件-GotoHTTP&RustDesk 自启动 粘滞键 …

RERCS系统开发实战案例-Part03 创建Web Dynpro对应的FPM Application

1、通过事务码SE80 资源浏览器创建 2、通过事务码FPM_WB在WEB端创建 3、创建FPM Application步骤 1)选择:在业务实体上创建FPM应用程序的向导; 2)配置:输入平面布置对象; 3)单击 下一个&#…

美业SaaS收银系统拓客系统源码分享-预约管理功能的作用和重要性

美业收银管理系统对于美容、美发、医美行业的门店来说至关重要,它不仅可以帮助提高管理效率和降低成本,还可以改善客户体验并促进业务增长。 (私信获取源码/演示视频) ▶ 美业系统中的【预约管理】有多种作用,包括&…