创建应用程序

自学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.mzph.cn/news/854937.shtml

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

相关文章

PostgreSQL源码分析——视图查询重写

这里我们分析一下查询重写的过程,主要分析视图的查询重写的过程。通过以下语句进行分析: create table t1(a int, b int); insert into t1 values(1,1); -- 创建视图 create view vt1 as select * from t1; -- 查询 select * from vt1;查询重写过程分析…

鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(下)

前言 在前两篇文章中,我们深入探讨了网络层的封装和优化技巧。本文将带您走进网络层的实战应用,从架构设计到具体实现,一步步指导您如何使用我们精心构建的网络框架。 一、网络层架构设计 在鸿蒙应用开发中,一个清晰、合理的网络层架构是保证项目可维护性和扩展性的关键…

发那科机器人IO 分配

IO 信号 也称为输入\输出信号,是机器人与外围设备通信的电信号

ROS 1的相机驱动代码迁移到ROS 2的方法

为了将ROS 1的相机驱动代码迁移到ROS 2,你需要对代码进行一系列的修改,包括但不限于更新消息类型、API调用和构建系统。 ### 步骤1:更新消息类型 - sensor_msgs/Image和cv_bridge在ROS 2中是可用的,但是确保你使用的是ROS 2版本的…

[CODE:-5504]没有[SYS.SYSOBJECTS]对象的查询权限

报错解释: 错误代码 [CODE:-5504] 表示用户尝试执行一个涉及到系统表 SYS.SYSOBJECTS 的查询,但是没有获得相应的查询权限。SYS.SYSOBJECTS 是一个系统表,包含了数据库中所有对象的信息,例如表、视图、存储过程等。 解决方法&am…

效率软件大盘点

Hey小伙伴们💕!知道你们都在追求高效工作生活,今天就来给大家种草五款超实用的国产工作App,让你的效率直线上升,再也不怕被工作追着跑啦!🚀 1️⃣ 【亿可达】 - 软件连接器 🔗 作为…

电手出软件啦!各种姿势一键重装你的系统

电手的兄弟们你们好啊,很多兄弟都知道,我们老大傲梅是做软件的,例如大伙儿都用过的傲梅分区助手,还有傲梅轻松备份。相信不少兄弟都是用了分区助手才关注到电手的。 而我们电手,在电脑和手机玩机内容方面一直深耕。 跟…

Linux安装并配置Java

1、Linux操作系统安装Java 1.1、下载Java JDK解压包 官方提供的网址: 选择Linux版本 下载列表选择最后一项,通过解压方式安装 倒数第二项是以rpm方式进行安装,另一篇安装MySQL时就是用到rpm方法。 1.2、解压JDK tar -zxvf jdk-8u411-lin…

软件项目管理概述

1.什么是项目? 2.项目管理的定义 3.项目管理的本质 4.项目成功的标志 5.项目管理的基本方法 6.项目的生命周期(启动 计划 执行 控制 结束) 7.结合生活中的某件事,谈谈项目管理的作用 项目管理在日常生活中扮演着重要的角色&…

CP AUTOSAR标准之LargeDataCOM(AUTOSAR_CP_SWS_LargeDataCOM)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块LdCom的功能、API和配置。   在AUTOSAR分层架构中,AUTOSAR LdCom模块位于RTE/SwCluC_LdComProxy和PDU路由之间,参见[1,EXP LayeredSoftwareArchitecture]。   AUTOSAR LdCom模块提供了一种替代的交互层机制。通过专注于…

代码随想录算法训练营第二十七天|93.复原IP地址、 78.子集、90.子集II

93.复原IP地址 题目链接:93.复原IP地址 文档讲解:代码随想录 状态:还行,判断字符是否有效卡了好久 思路:通过回溯算法遍历所有可能的分割方式,每个IP地址段必须是0到255之间的整数且不能有前导零&#xff0…

Protobuf详解及入门指南

Protobuf详解及入门指南 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在分布式系统和跨平台通信中,高效、轻量的序列化协议尤为重要。Google的Pro…

PyMuPDF 操作手册 - 01 从PDF中提取文本

文章目录 一、打开文件二、从 PDF 中提取文本2.1 文本基础操作2.2 文本进阶操作2.2.1 从任何文档中提取文本2.2.2 如何将文本提取为 Markdown2.2.3 如何从页面中提取键值对2.2.4 如何从矩形中提取文本2.2.5 如何以自然阅读顺序提取文本2.2.6 如何从文档中提取表格内容2.2.6.1 提…

MSPM0G3507——定时器简介和功能

分为两种定时器:通用定时器(TIMG)和高级控制定时器(TIMA) 在官方手册中可能还出现TIMX,这里TIMX指的是两者通用的功能。 TIMG概述: TIMG模块由16位和32位自动重新加载计数器组成,由可编程预分…

Python 开发者必看,用Flet库打造你的第一个Web应用

大家好,桌面应用程序开发一直是一个热门话题。在python中,使用Tkinter和wxPython虽然功能强大,但它们在现代UI设计和交互体验上显得有些力不从心。而Flet,作为一个新兴的Python库,以其现代化的设计理念和简洁的开发方式…

小程序wx.uploadFile异步问题

问题&#xff1a;小程序上传文件后我需要后端返回的一个值&#xff0c;但这个值总是在最后面导致需要这个值的方法总是报错&#xff0c;打印测试后发现这它是异步的。但直接使用 await来等待也不行。 uploadImg.wxml <view class"upload-wrap"><view clas…

【自撰写】【国际象棋入门】第4课 局面分析初步

第4课 局面分析初步 一、国际象棋的棋局阶段划分 随着对弈的进行&#xff0c;国际象棋棋局可以划分为3个阶段&#xff0c;分别是开局阶段、中局阶段和残局阶段。简单说来&#xff0c;开局阶段主要完成子力的出动和布局&#xff1b;中局阶段涉及到更多的子力协同配合和子力兑换…

镭速是如何做到传输中快速校验大文件的

在信息泛滥的当下&#xff0c;文件传输系统的效率与安全性成为企业和个人用户高度关注的焦点。传统上&#xff0c;文件传输依赖于如MD5或XXHash等单一的完整性校验机制。 然而&#xff0c;在多变的工作环境中&#xff0c;这些传统方法显得不够灵活。镭速&#xff0c;作为大文件…

PostgreSQL源码分析——创建分区表

分区表&#xff0c;可以认为是逻辑上一张表&#xff0c;但实际上是将逻辑上的一张表&#xff0c;分割为了多个物理表&#xff0c;每个物理表是逻辑表中的一部分&#xff0c;组合起来就是一张表。所以在实现分区表时&#xff0c;实际上是创建了多张物理表&#xff0c;但是逻辑上…

【神经网络】深度神经网络

深度神经网络&#xff08;Deep Neural Network&#xff0c;简称DNN&#xff09;是一种模仿人脑神经网络结构和工作原理的机器学习模型。它通过层级化的特征学习和权重调节&#xff0c;能够实现复杂任务的高性能解决方案。深度神经网络由多个神经元层组成&#xff0c;每个神经元…