【pyqt5界面化开发-4】垂直布局/水平布局+‘套娃‘布局

news2025/1/14 18:32:32

目录

一、垂直布局

二、布局器的组合

三、水平布局+垂直布局(套娃)


一、垂直布局

需要模块:QVBoxLayout

        # 垂直布局
        layout = QVBoxLayout()

        ………………

        # 应用设置的布局器
        self.setLayout(layout)

模块间的伸缩器(可以理解为弹簧,在组件之间添加,加哪哪位置变大)

注:括号内,加数字,可以用来区分不同弹簧间的比例

layout.addStretch()

代码封装到类中(前面的代码都是直接写的)

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QVBoxLayout


class Windows(QWidget):
    def __init__(self):
        # 调用父类的__init__方法(并传入子类,或实例)
        super(Windows, self).__init__()

        # 设置大小
        self.resize(700, 500)
        self.setWindowTitle("pyqt5程序")  # 窗口标题

        # 垂直布局
        layout = QVBoxLayout()

        # 按钮
        btn1 = QPushButton('账号')
        layout.addWidget(btn1)      # 添加到布局器
        btn2 = QPushButton('密码')
        layout.addWidget(btn2)      # 添加到布局器
        btn3 = QPushButton('确认')
        layout.addWidget(btn3)      # 添加到布局器

        layout.addStretch(2)

        # 应用设置的布局器
        self.setLayout(layout)


if __name__ == '__main__':
    # 接收参数(仅有一个)
    app = QApplication(sys.argv)

    w = Windows()       # 创建一个窗口(继承了QWindows,并封装为一个类)
    w.show()            # 展示窗口
    sys.exit(app.exec_())  # 程序进入循环等待,并在退出时关闭应用



二、布局器的组合

垂直布局器+水平布局器

关系:套娃

将多个布局器的垂直水平关系在一个大布局器内确认---->然后再分别处理套娃内的布局器

注意:

对于套娃内的套娃--->放在一个组里面,然后设置组的布局

组需要的模块:QGroupBox

水平+垂直器模块:QHBoxLayout, QVBoxLayout

设置组:group1 = QGroupBox()



三、水平布局+垂直布局(套娃)

代码:

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QRadioButton


class Windows(QWidget):
    def __init__(self):
        # 调用父类的__init__方法(并传入子类,或实例)
        super(Windows, self).__init__()
        self.init_ui()

    def init_ui(self):
        # 先定义最外层的垂直布局(水平布局是QHBoxLayout):垂直布局+水平布局-->垂直关系
        container = QVBoxLayout()       # 最外层布局器(命名为容器)

        #——————————创建第一个组(垂直布局)——————————#
        group1_box = QGroupBox('target')    # 组
        target_layout = QVBoxLayout()   # 布局

        # 控件
        btn1 = QRadioButton('target1')
        btn2 = QRadioButton('target2')
        btn3 = QRadioButton('target3')
        btn4 = QPushButton('确认')

        # 将控件添加到布局中
        target_layout.addWidget(btn1)
        target_layout.addWidget(btn2)
        target_layout.addWidget(btn3)
        target_layout.addWidget(btn4)

        # 将布局设置到组中
        group1_box.setLayout(target_layout)




        # ——————————创建第二个组(水平布局)——————————#
        group2_box = QGroupBox('test')  # 组
        test_layout = QHBoxLayout()   # 布局

        # 控件
        btn1 = QRadioButton('test1')
        btn2 = QRadioButton('test2')
        btn3 = QRadioButton('test3')


        # 将控件添加到布局中
        test_layout.addWidget(btn1)
        test_layout.addWidget(btn2)
        test_layout.addWidget(btn3)

        # 将布局设置到组中
        group2_box.setLayout(test_layout)



        # 将2个组中添加到最外层布局器中
        container.addWidget(group1_box)
        container.addWidget(group2_box)

        # 设置显示最外层布局器 (布局器的应用)
        self.setLayout(container)

        # 窗口设置
        self.resize(700, 500)            # 设置大小
        self.setWindowTitle("pyqt5程序")  # 窗口标题



if __name__ == '__main__':
    app = QApplication(sys.argv)    # 接收参数(仅有一个)
    w = Windows()           # 创建一个窗口(继承了QWindows,并封装为一个类)
    w.show()                # 展示窗口
    sys.exit(app.exec_())   # 程序进入循环等待,并在退出时关闭应用

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

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

相关文章

InfluxDB在Windows的下载,安装,自启动

1.官网下载 官网下载地址,我一般都喜欢官网下载,包含windows,linux,macos,docker,K8s甚至树莓派系统等。 2.启动 进入到文件夹下,双击启动exe的话会一闪而过,它告诉你要cmd用命令…

uni-app中使用iconfont彩色图标

uni-app中使用iconfont彩色图标 大家好,今天我们来学习一下uni-app中使用iconfont彩色图标,好好看,好好学,超详细的 第一步 首先,从iconfont官网(iconfont-阿里巴巴矢量图标库)选择自己需要的图…

九号公司董事长高禄峰:立足科技创新,助力行业发展

从整个电动两轮车发展时间线来看,尽管九号公司2019年才正式进入局电动两轮车市场,但公司凭借智能化入局,在短短三年时间里,已经成长为智能电动两轮车市场的领军者,在这期间,九号公司既没有多年的市场积累&a…

基于 OV5640 摄像头理论知识讲解-典型工作模式配置

基于OV2640/ OV5640 的图像采集显示系统系列文章目录: (1)基于 OV5640 摄像头理论知识讲解-成像和采样原理 (2)基于 OV5640 摄像头理论知识讲解-数字接口和控制接口 (3)基于 OV5640 摄像头理论知…

单链表oj题

🍟1.反转链表 链接: https://leetcode.cn/problems/reverse-linked-list/description/ 思路一:遍历一遍的同时两两逆置 写法一: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next…

生成式AI背景下编程工作者的技术和高级软考理论的演进融合之路

思考背景 近两次软考,我都参与了,2022年11月参加的是系统架构师的考试,2023年5月参加的是系统分析师的考试,去年参加系统架构是考试是完全的裸考和第一次考,成绩是选择题39,综合题46和论文48分&#xff0c…

开发卡牌gamefi游戏需要多少钱?

卡牌游戏作为一种受欢迎的游戏形式,吸引了众多开发者的关注。然而,开发一款成功的卡牌游戏需要全面考虑多个方面的因素,其中之一就是资金投入。本文将从专业性和投入回报的角度,探讨开发一款卡牌游戏所需的资金投入。 一、专业性的…

[Agent]开发---csvAgent开发

资料: https://python.langchain.com/docs/integrations/toolkits/csvcsvagent需要csv文件和模型,该方法在后台使用pandas方法去处理该文件,然后调用LLM去回答问题 我们使用内置函数去调用csvagent。 AgentType根据自己需要下载;…

国家公派必读|CSC各类留学人员奖学金资助和艰苦地区补贴标准

国家留学基金委(以下简称CSC)为公派留学人员(含高级研究人员、访问学者、博士后及留学生)提供一定数额的奖学金,对艰苦地区还有特殊生活补贴,本文知识人网小编根据相关文件加以整理后撰文如下。 根据以上文…

打破对ChatGPT的依赖以及如何应对ChatGPT的错误和幻觉

​ OpenAI的ChatGPT是第一个真正流行的生成式AI工具,但它可能不是最好的。现在是时候扩大你的AI视野了。 ChatGPT成为了基于大语言模型(LLM)的聊天机器人的同义词。但是现在是时候停止对ChatGPT的痴迷,开始发现这个新世界中强大的替代品了。 首先&a…

StringBuilder类分享(1)

一、StringBuilder说明 StringBuilder是一个可变的字符序列。这个类提供了一个与StringBuffer兼容的API,但不保证同步,即StringBuilder不是线程安全的,而StringBuffer是线程安全的。显然,StringBuilder要运行的更快一点。 这个类…

编程题四大算法思想(一)——分治法:最大子数组问题、矩阵乘法的Strassen算法、最近点对问题、凸包问题

文章目录 分治法分治策略分治算法的效率分析归并排序 具体应用问题最大子数组问题蛮力法分治法找跨越中间位置的最大子数组时间复杂度 矩阵乘法蛮力算法分治法Strassen矩阵乘法 分治法 方法 分治策略分治法效率分析——迭代法(递归树法)分治法效率分析—…

学习JAVA打卡第四十六天

Date和Calendar类 Date类 ⑴使用无参数构造方法 使用Date 类的无参数构造方法创建的对象可以获取本机的当前日期和时间,例如: Date nowtime new Date(); ⑵使用带参数的构造方法 计算机系统将其自身的时间的设“…

redis实战-项目集成git及redis实现短信验证码登录

目录 IDEA集成git 传统session存在的问题 redis方案 业务流程 选用的数据结构 整体访问流程 发送短信验证码 获取校验验证码 配置登录拦截器 拦截器注册配置类 拦截器 用户状态刷新问题 刷新问题解决方案 IDEA集成git 远程仓库采用码云,创建好仓库&…

js定位到元素底部

文字的一行一行添加的&#xff0c;每次添加要滚动条自动定位到元素底部 <div class"An">//要父元素包裹&#xff0c;父元素设置max-height&#xff0c;overflow啥的<div class"friendly_pW"></div></div>//添加文字时找子元素的高…

数据管理,是企业管理的上帝视角

在早期&#xff0c;企业整体规模较小&#xff0c;市场以及产品也比较匮乏&#xff0c;用户对商品没有过多的需求&#xff0c;更多是出于对必需品的需要&#xff0c;选择购买商品。伴随着经济的飞速发展&#xff0c;企业规模在扩大的同时&#xff0c;市场和用户对商品的需求日益…

【pyqt5界面化工具开发-8】窗口开发-QDialog对话框

目录 一、调用父类的菜单 二、添加更多的布局在对话框内 一、调用父类的菜单 和前面Qwedget一样的结构&#xff08;不做过多介绍&#xff09; 可以参考代码中的注释 import sys from PyQt5.QtWidgets import QApplication, QPushButton, QDialog# 对话框&#xff08;多运用…

Windows服务器使用Mysqldump备份MySQL数据库方法

Windows服务器使用Mysqldump备份MySQL数据库方法 1.进入到MySQL安装目录的bin目录下&#xff0c;进入cmd F:\20220601\dev_software\mysql-8.0.11-winx64 2.执行备份命令&#xff1a; mysqldump -u root -p zj_bak test_bak -r D:\backup.sql3.导入备份 数据&#xff1a; m…

DDS器件原理与应用(AD9833 AD9834)

1、DDS模块的主要构成 DDS模块原理框图 2、DDS器件的工作原理 直接数字合成是生成模拟信号的一种常用方法&#xff0c;简单意义上的DDS&#xff0c;主要由相位调制器、波形查找表和DAC组成。相位调制器产生一个相位信息&#xff0c;使用该相位信息去波形查找表中查找对应的幅…