wxpython设计GUI:wxFormBuilder工具常用布局结构介绍之布局四—面板拼接式

news2024/11/15 17:52:19

python借助wxFormBuilder工具搭建基础的GUI界面—wxFormBuilder工具使用介绍:https://blog.csdn.net/Logintern09/article/details/126685315

布局四:面板拼接式,先Panel面板构图,再使用程序代码在Frame框架上拼接面板

在这里插入图片描述

下面讲一下怎么实现Frame拼接不同面板的。

生成基础的panel模型

wxFormBuilder工具添加一个面板,在面板上继续添加想要的控件,将自动生成的python代码拷贝到Pycharm编辑器的某个命名的.py文件中。

面板上添加的基础控件如下:

在这里插入图片描述

wxFormBuilder工具自动生成的python代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

###########################################################################
## Python code generated with wxFormBuilder (version Jun 17 2015)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc


###########################################################################
## Class MyPanel
###########################################################################

class MyPanel(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),
                          style=wx.TAB_TRAVERSAL)

        bSizer = wx.BoxSizer(wx.VERTICAL)

        self.m_slider = wx.Slider(self, wx.ID_ANY, 50, 0, 100, wx.DefaultPosition, wx.DefaultSize,
                                  wx.SL_INVERSE | wx.SL_VERTICAL)
        bSizer.Add(self.m_slider, 0, wx.ALL, 5)

        self.m_checkBox = wx.CheckBox(self, wx.ID_ANY, u"Check Me!", wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer.Add(self.m_checkBox, 0, wx.ALL, 5)

        self.m_staticText = wx.StaticText(self, wx.ID_ANY, u"MyLabel", wx.DefaultPosition, wx.DefaultSize, 0)
        self.m_staticText.Wrap(-1)
        bSizer.Add(self.m_staticText, 0, wx.ALL, 5)

        m_comboBoxChoices = []
        self.m_comboBox = wx.ComboBox(self, wx.ID_ANY, u"Combo!", wx.DefaultPosition, wx.DefaultSize, m_comboBoxChoices,
                                      0)
        bSizer.Add(self.m_comboBox, 0, wx.ALL, 5)

        self.SetSizer(bSizer)
        self.Layout()

    def __del__(self):
        pass


Frame拼接Panel

原Panel类初始化:

class MyPanel(wx.Panel):

    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),
                          style=wx.TAB_TRAVERSAL)

将面板类的位置pos、尺寸size、风格style参数作为面板类的实例属性,变形后:

class MyPanel(wx.Panel):

    def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300),
                 style=wx.TAB_TRAVERSAL):
        wx.Panel.__init__(self, parent, id, pos, size, style)

Frame拼接Panel:

class MyFrame(wx.Frame):

    def __init__(self):

        wx.Frame.__init__(self, None, id=-1, title=u"", pos=(200, 200),
                          size=(600, 600), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

        self.Center()
        
        self.my_panel = MyPanel(self, id=-1, pos=(0, 0), size=wx.Size(200, 300), style=wx.TAB_TRAVERSAL)

Frame上拼接多个Panel模型

窗口Frame上并排的拼接多个Panel模型,可以通过函数自动设置Panel放置在Frame上的位置来实现。将整个Frame看成是二维坐标轴的话,那么Frame的左上角是坐标(0,0)。

  def set_panel_dict(self):
        self.panel_dict = dict()
        init_length, init_width = self.canset_panel.GetSize()
        panel_width = 500
        for i in range(len(item_list)):
            panel_pos = (self.panel_length * i, init_width)
            self.panel_dict[item_list[i]] = frameset_panel(self, id=-1, pos=panel_pos,
                                                           size=wx.Size(self.panel_length, panel_width), style=wx.TAB_TRAVERSAL)

参考文章

python GUI图形化编程-wxpython(2)-使用panel面板

wx.BoxSizer布局管理:https://blog.csdn.net/igolang/article/details/9397175

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

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

相关文章

SurfaceFlinger模块

SurfaceFlinger是一个系统服务,作用就是接受不同layer的buffer数据进行合成,然后发送到显示设备进行显示。SurfaceFlinger进程是什么时候起来的?在之前的Android低版本手机上,SurfaceFlinger进程是在init.rc中启动的,在…

.Net Core WebApi 在Linux系统Deepin上部署Nginx并使用(一)

前言: Deepin最初是基于Ubuntu的发行版 2015年脱离Ubuntu开发,开始基于Ubuntu上游Debian操作系统 2019年脱离Debian,直接基于Linux开发,真正属于自己的上游Linux系统发行版 2022年8月,新版《Deepin V23》我下载开始了我…

Registry与DGC的攻击利用

0x01 2022-02-03写的一篇文章。 0x02 Registry Registry指的是RMI的注册表,攻击的目标是注册表所在的机器,一般注册表和RMI Server在同一个机器上,特殊情况下也会在不同机器上。 在我们通过LocateRegistry#getRegistry获取到目标开启的注…

Win32:C++其实早已支持中文编程

我们以前学习C/C的时候,对于变量和标识符的命名都有如下规则: 变量名必须由字母、数字、下划线构成只能以字母、下划线开头 似乎对中文不太友善啊,于是后来出现了一些中文编程的呼声,甚至还真的出现了一些中文编程语言。 其实在…

【微信小程序-原生开发】实用教程15 - 列表的排序、搜索(含云数据库常用查询条件的使用方法,t-search 组件的使用)

请先完成列表数据的分页、触底加载 【微信小程序-原生开发】实用教程14 - 列表的分页加载,触底加载更多(含无更多数据的提醒和显示,自定义组件) https://blog.csdn.net/weixin_41192489/article/details/129355396 效果预览 核心…

嵌入式 Linux进程间的通信--信号

目录 信号 信号的概述 信号类型 信号发送 1、kill 函数 2、raise函数 3、pause函数 信号处理 可以结合上一篇文章一起看: 嵌入式 Linux进程之间的通信_丘比特惩罚陆的博客-CSDN博客 信号 信号的概述 软中断信号(signal,又简称为…

软聚类算法:模糊聚类 (Fuzzy Clustering)

前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 在介绍模糊聚类之前,我们先简单地列举一下聚类算法的常见分类: 硬聚类 (Hard Clustering) Connec…

NGINX学习笔记 - 一篇了解NGINX的基本概念(一)

NGINX是什么? NGINX是一款由俄罗斯人伊戈尔赛索耶夫使用C语言开发的、支持热部署的、轻量级的WEB服务器/反向代理服务器/电子邮件代理服务器,因为占用内存较少,启动极快,高并发能力强,所以在互联网项目中广泛应用。可…

十二、面向切面编程AOP

IoC使软件组件松耦合。AOP让你能够捕捉系统中经常使用的功能,把它转化成组件。 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程。(AOP是一种编程技术) AOP是对OOP的补充延伸。 …

互联互通新里程,数字城轨助力城市繁荣!

轨道交通是城市间互通互联的命脉,是当下人们出行的首要选择之一,也是我国“新基建”的重点建设对象。将城轨交通各链路系统及多类型服务,与空间感知、移动互联、云计算等技术深度融合,集中实现城市空间、城轨分布、城轨运行动态的…

有哪些平价好用的台灯推荐?台灯买什么光的比较好

随着社会的发展,生产水平逐渐提高,很多东西都得到长足的发展,对咱们的生活水平的提高帮助也越来越大,台灯也不例外。台灯是现在各个年龄段人群都在使用的产品,晚上熬夜工作、学习、看书、休闲等等都很合适,…

Linux学习第十七节-Apache httpd的web服务

1.简介 适用于Unix/Linux下的web服务器软件。 Apache httpd(开源且免费),虚拟主机,支持HTTPS协议,支持用户认证,支持单个目录的访问控制,支持URL地址重写,支持路径别名,…

北斗RTK高精度定位在AI领域的应用

随着北斗高精度定位技术越来越成熟,通过GNSS高精度定位与机器人结合,越来越多的智能机器人走进我们生活中。像驾培机器人、智能除草机器人、智能巡检机器人、北斗划线机器人等智能机器人已经广泛的投入使用。驾培机器人驾培机器人:通考车安装…

java基础——类加载机制

类加载机制一、背景知识补充二、类加载过程/机制1、浅层理解2、大致步骤3、具体步骤(3.1)装载loading:查找和导入相应的class文件(3.2)链接linking:把类的二进制数据合并到JRE中(3.3&#xff09…

计算机的操作系统

目录 ❤ 什么是操作系统? ❤ 什么是文件? ❤ 什么是应用程序? ❤ 为什么要有操作系统? ​❤ 操作系统有什么用? ❤ 操作系统和应用程序的启动 python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.201…

json-server的使用

流程 1.安装json-server的两个依赖 npm -g i json-server npm install -g json-server 2.安装axios依赖 npm i axios 3.全局导入axios使用src目录下main.js文件内 import axios from ‘axios’; 4.配置全局默认地址:src目录下main.js文件内 axios.defaults.bas…

十九、java虚拟机堆

堆的核心概述 1.一个JVM实例只存在一个堆内存,堆也是java内存管理的核心区域。 2.Java堆区子啊JVM启动的时候即被创建,其空间大小也就确定了,是jvm管理的最大一块内存空间, 1)堆内存的大小是可以调节的。 3.《java虚拟…

运行时数据区及程序计数器

运行时数据区 概述 运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时…

记录Paint部分常用的方法

Paint部分常用的方法1、实例化之后Paint的基本配置2、shader 和 ShadowLayer3、pathEffect4、maskFilter5、colorFilter6、xfermode1、实例化之后Paint的基本配置 Paint.Align Align指定drawText如何将其文本相对于[x,y]坐标进行对齐。默认为LEFTPaint.Cap Cap指定了笔画线和路…

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊) 目录SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)1.概述2.最佳实践2.1创建项目引入依赖(mail)2.2 修改yml配置文件2.3 启动类添加EnableScheduling注解2.4 执行的…