Pyside6 --Qt设计师--简单了解各个控件的作用之:Layouts,Spaces

news2024/12/26 21:38:23

目录

  • 一、Layouts
    • 1.1 Vertical Layout说明
      • 1.1.1 Qt设计师图
      • 1.1.2 py代码
    • 1.2 Horizontal Layout说明
      • 1.2.1 Qt设计师图
      • 1.2.2 py代码
    • 1.3 Grid Layout说明
      • 1.3.1 Qt设计师图
      • 1.3.2 py代码
    • 1.4 Form Layout说明
      • 1.4.1 Qt设计师图
      • 1.4.2 py代码
  • 二、Spaces(空格)
    • 2.1 说明
    • 2.2 使用
    • 2.3 Horizontal Spaces
      • 2.3.1 代码
      • 2.3.1 图片
    • 2.4 Vertical Spaces
      • 2.4.1 代码
      • 2.4.2 图片

这一块的内容我就按照Qt设计师的分类的进行解释,
作者也是查阅大量文章,网站,进行学习!

一、Layouts

名称翻译作用
Vertical Layout垂直布局顾名思义,就是将垂直布局,从上到下,移动放大页面时候,自动填充,不会失真
Horizontal Layout水平布局顾名思义,就是将元素水平布局,从左到右,移动放大页面时候,自动填充,不会失真
Grid Layout网格布局网格布局将控件放置在一个类似表格的网格中。可以指定控件所占的行和列,适合复杂的布局,例如表单、数据输入界面等;可以设置控件在网格中的位置(行和列),并支持合并单元格等功能。
Form Layout表单布局表单布局用于将标签和输入控件(如文本框)配对,并自动对齐。这种布局通常用于创建表单界面,其中标签和对应的输入控件并排显示;适用于表单样式的界面,标签通常在左边,输入框在右边。

详细的介绍,后续涉及到会单独写各个属性啥的之类的作用! @ymchuangke

1.1 Vertical Layout说明

1.1.1 Qt设计师图

在这里插入图片描述

1.1.2 py代码

import sys #
# sys 模块提供了对 Python 解释器的一些基本操作和功能。
# 这里主要用于传递命令行参数(sys.argv)给 QApplication,以及在应用结束时退出程序(sys.exit())


from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtWidgets import QPushButton # 导入按钮控件
from PySide6.QtWidgets import QWidget # 创建容器
from PySide6.QtWidgets import QVBoxLayout # 导入垂直布局
# Pyside6.QtWidgets: 模块包含GUI开发所需的绝大多数类
# QApplication:是 PySide6 中的应用程序对象,管理应用的执行流程和GUI控件的事件循环。它是创建任何 Qt 应用的必需对象
# QMainWindow:是一个应用程序主窗口的基类,提供了窗口的框架,通常包含菜单、工具栏、状态栏等功能。我们的 MainWindow 类继承了这个类

# 定义一个类Window
class window(QMainWindow): # window继承父类QMainwindow,
    def __init__(self): # 初始化

        # 初始化窗口设置
        super().__init__() # 调用父类(QMainwindow中的构造函数,初始化窗口的基本设置1
        self.setWindowTitle("这是Layout-Vertical Layouts") # title
        self.setGeometry(500,300,800,600)  # Gemoetry 几何的意思,就是设置几何画布,四个参数,一个坐标(x,y),一个长,一个宽,单位像素px
        # (500,300) 坐标,窗口左上角第一个点举例桌面左上角
        # 800,600: 800x600px


        # 创建主页面上方的容器(可以往里添加控件等)
        centrel_widget = QWidget(self)
        self.setCentralWidget(centrel_widget) # 我的理解就是添加一个容器

        # 创建垂直布局
        layout = QVBoxLayout()


        # 创建按钮(3个吧)、
        button_1 = QPushButton("按钮1")
        button_2 = QPushButton("按钮2")
        button_3 = QPushButton("按钮3")

        # 将创建的按钮添加到layout
        layout.addWidget(button_1)
        layout.addWidget(button_2)
        layout.addWidget(button_3)

        # 设置窗口的布局
        centrel_widget.setLayout(layout)



if __name__ == "__main__": # 这行确保这段程序作为主程序运行时才会执行以下代码
    app = QApplication(sys.argv) # 创建一个 QApplication 对象,接收命令行参数 sys.argv
    main_window = window() # 实例化 Window 类,创建主窗口。
    main_window.show() # 显示主窗口。
    sys.exit(app.exec()) # 进入 Qt 的事件循环(app.exec()),一直显示该窗口!

# 后续添加槽就可以点击连接事件了!

如下图:
在这里插入图片描述

在这里插入图片描述

1.2 Horizontal Layout说明

1.2.1 Qt设计师图

在这里插入图片描述

1.2.2 py代码

import sys #
# sys 模块提供了对 Python 解释器的一些基本操作和功能。
# 这里主要用于传递命令行参数(sys.argv)给 QApplication,以及在应用结束时退出程序(sys.exit())


from PySide6.QtWidgets import QApplication, QMainWindow
# Pyside6.QtWidgets: 模块包含GUI开发所需的绝大多数类
# QApplication:是 PySide6 中的应用程序对象,管理应用的执行流程和GUI控件的事件循环。它是创建任何 Qt 应用的必需对象
# QMainWindow:是一个应用程序主窗口的基类,提供了窗口的框架,通常包含菜单、工具栏、状态栏等功能。我们的 MainWindow 类继承了这个类

from PySide6.QtWidgets import QWidget # 创建容器
from PySide6.QtWidgets import QPushButton # 按钮
from PySide6.QtWidgets import QHBoxLayout #水平布局

# 定义一个类Window
class window(QMainWindow): # window继承父类QMainwindow,
    def __init__(self): # 初始化

        # 初始化窗口设置
        super().__init__() # 调用父类(QMainwindow中的构造函数,初始化窗口的基本设置1
        self.setWindowTitle("水平布局!") # title
        self.setGeometry(500,300,800,600)  # Gemoetry 几何的意思,就是设置几何画布,四个参数,一个坐标(x,y),一个长,一个宽,单位像素px
        # (500,300) 坐标,窗口左上角第一个点举例桌面左上角
        # 800,600: 800x600px

        # 创建容器
        centrel_widget = QWidget(self)
        self.setCentralWidget(centrel_widget)

        # 创建水平布局
        hor_layout = QHBoxLayout(centrel_widget)

        # 创建按钮
        button_1 = QPushButton("按钮1")
        button_2 = QPushButton("按钮2")
        button_3 = QPushButton("按钮3")

        # 添加按钮到布局中中
        hor_layout.addWidget(button_1)
        hor_layout.addWidget(button_2)
        hor_layout.addWidget(button_3)

        # 设置水平布局到容器里面
        centrel_widget.setLayout(hor_layout)



if __name__ == "__main__": # 这行确保这段程序作为主程序运行时才会执行以下代码
    app = QApplication(sys.argv) # 创建一个 QApplication 对象,接收命令行参数 sys.argv
    main_window = window() # 实例化 Window 类,创建主窗口。
    main_window.show() # 显示主窗口。
    sys.exit(app.exec()) # 进入 Qt 的事件循环(app.exec()),一直显示该窗口!

在这里插入图片描述
在这里插入图片描述

1.3 Grid Layout说明

1.3.1 Qt设计师图

在这里插入图片描述

1.3.2 py代码

import sys #
# sys 模块提供了对 Python 解释器的一些基本操作和功能。
# 这里主要用于传递命令行参数(sys.argv)给 QApplication,以及在应用结束时退出程序(sys.exit())


from PySide6.QtWidgets import QApplication, QMainWindow
# Pyside6.QtWidgets: 模块包含GUI开发所需的绝大多数类
# QApplication:是 PySide6 中的应用程序对象,管理应用的执行流程和GUI控件的事件循环。它是创建任何 Qt 应用的必需对象
# QMainWindow:是一个应用程序主窗口的基类,提供了窗口的框架,通常包含菜单、工具栏、状态栏等功能。我们的 MainWindow 类继承了这个类


from PySide6.QtWidgets import QWidget # 创建容器
from PySide6.QtWidgets import QGridLayout # 创建网格布局
from PySide6.QtWidgets import QPushButton

# 定义一个类Window
class window(QMainWindow): # window继承父类QMainwindow,
    def __init__(self): # 初始化

        # 初始化窗口设置
        super().__init__() # 调用父类(QMainwindow中的构造函数,初始化窗口的基本设置1
        self.setWindowTitle("垂直布局!") # title
        self.setGeometry(500,300,800,600)  # Gemoetry 几何的意思,就是设置几何画布,四个参数,一个坐标(x,y),一个长,一个宽,单位像素px
        # (500,300) 坐标,窗口左上角第一个点举例桌面左上角
        # 800,600: 800x600px


        # 创建容器
        centrel_widget = QWidget(self)
        self.setCentralWidget(centrel_widget)

        # 创建网格布局
        grid_layout = QGridLayout(centrel_widget) # 把容器设置为网格布局

        # 创建按钮
        button_1 = QPushButton("按钮1")
        button_2 = QPushButton("按钮2")
        button_3 = QPushButton("按钮3")
        button_4 = QPushButton("按钮4")
        button_5 = QPushButton("按钮5")

        # 添加按钮到网格布局中 (一行2个),最后一个演示特殊用法
        # 想象一下这个网格(有点矩阵的感觉)
        grid_layout.addWidget(button_1,0,0)  # (0,0)
        grid_layout.addWidget(button_2,0,1)  # (0,1)
        grid_layout.addWidget(button_3,1,0)  # (1,0)
        grid_layout.addWidget(button_4,1,1)  # (1,1)
        grid_layout.addWidget(button_5,3,0,1,3) # 放在第三行第一个位置,(3,0),占一行三列(1,3)


        # 设置网格布局到容器里面
        centrel_widget.setLayout(grid_layout)



if __name__ == "__main__": # 这行确保这段程序作为主程序运行时才会执行以下代码
    app = QApplication(sys.argv) # 创建一个 QApplication 对象,接收命令行参数 sys.argv
    main_window = window() # 实例化 Window 类,创建主窗口。
    main_window.show() # 显示主窗口。
    sys.exit(app.exec()) # 进入 Qt 的事件循环(app.exec()),一直显示该窗口!

在这里插入图片描述
在这里插入图片描述

1.4 Form Layout说明

1.4.1 Qt设计师图

在这里插入图片描述

1.4.2 py代码

import sys
from PySide6.QtWidgets import QMainWindow, QApplication, QWidget, QFormLayout, QLabel, QLineEdit, QPushButton



class Main_Window(QMainWindow):
    def __init__(self):
        # 初始化
        super().__init__()
        self.setWindowTitle("表单布局")
        self.setGeometry(300, 100, 800, 600)



        # 创建主页面容器
        centrel_widget = QWidget(self)
        self.setCentralWidget(centrel_widget)


        # 创建表单布局
        form_layout = QFormLayout(centrel_widget)


        # 创建标签和输入框
        self.name_label = QLabel("姓名:")
        self.name_input = QLineEdit()  # 输入框

        self.age_label = QLabel("年龄:")
        self.age_input = QLineEdit()  # 输入框

        self.email_label = QLabel("邮箱:")
        self.email_input = QLineEdit()  # 输入框



        # 将标签和输入框添加到表单中
        form_layout.addRow(self.name_label,self.name_input)
        form_layout.addRow(self.age_label,self.age_input)
        form_layout.addRow(self.email_label,self.email_input)

        # 添加提交按钮
        self.submit_button = QPushButton("提交")
        form_layout.addRow(self.submit_button)

        # 激活
        centrel_widget.setLayout(form_layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_Window = Main_Window()
    main_Window.show()
    sys.exit(app.exec())

在这里插入图片描述
在这里插入图片描述

二、Spaces(空格)

2.1 说明

名称翻译
Horizontal Spacer垂直空格
Vertical Spaces水平空格

2.2 使用

就是可以调整不同控件的间隙

如下:
在这里插入图片描述

2.3 Horizontal Spaces

2.3.1 代码

import sys

from PySide6.QtWidgets import QApplication, QWidget, QHBoxLayout, QMainWindow, QPushButton, QSpacerItem
from PySide6.QtWidgets import QSizePolicy, QSpacerItem


class Main_window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("水平空格!")
        self.setGeometry(200,100,800,600)


        # 创建容器
        centrel_widget = QWidget(self)
        self.setCentralWidget(centrel_widget)


        # 创建水平布局
        hor_layout = QHBoxLayout()

        # 创建水平控件
        h_spacer = QSpacerItem(300,30) # (x,y) 第一个参数表示长度,第二个表示高度

        # 创建按钮
        button_1 = QPushButton("按钮1")
        button_2 = QPushButton("按钮2")

        # 把创建的按钮添加到水平布局里面
        hor_layout.addWidget(button_1)
        hor_layout.addItem(h_spacer) # 添加水平空格
        hor_layout.addWidget(button_2)

        # 把这个hor_layout作为参数传递给窗口主控
        centrel_widget.setLayout(hor_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = Main_window()
    main_window.show()
    sys.exit(app.exec())

2.3.1 图片

在这里插入图片描述
在这里插入图片描述

2.4 Vertical Spaces

2.4.1 代码

import  sys
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout
from PySide6.QtWidgets import QSpacerItem, QSizePolicy, QWidget


class Main_window(QMainWindow):
    def __init__(self):
        super().__init__()
        # 初始化
        self.setWindowTitle("垂直空格!")
        self.setGeometry(200,100,800,600)


        # 主控
        centrel_window = QWidget(self)
        self.setCentralWidget(centrel_window)

        # 添加垂直布局
        v_layout = QVBoxLayout()

        # 添加按钮
        button_1 = QPushButton("按钮1")
        button_2 = QPushButton("按钮2")

        # 添加垂直空格
        v_space = QSpacerItem(10, 400)

        # 添加按钮到垂直布局
        v_layout.addWidget(button_1)
        v_layout.addItem(v_space)
        v_layout.addWidget(button_2)


        # layout->centrel_widget
        centrel_window.setLayout(v_layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = Main_window()
    main_window.show()
    sys.exit(app.exec())



2.4.2 图片

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Multimodal Few-Shot Learning with Frozen Language Models译文

摘要 当经过足够规模的训练时,自动回归语言模型在只需要几个例子的提示下就能表现出学习新语言任务的显著能力。在这里,我们提出了一种简单而有效的方法,将这种少量学习能力转移到多模态环境(视觉和语言)。使用对齐的图…

电脑显示没信号显示屏不亮怎么办?电脑没信号解决方法

电脑没信号显示屏不亮这种故障的原因可能有多种,例如显示器的供电、连接、设置等问题,或者电脑的显卡、内存、硬盘、主板等硬件问题。所以我们想要解决这个问题,也是需要多方面排除找到具体原因然后进行修复。下面将为大家介绍一些常见的电脑…

docker中可视化rviz

docker中可视化rviz 背景1. 确定适合的 NVIDIA 驱动版本2. 检查 NVIDIA Container Toolkit 安装2.1 安装 NVIDIA Container Toolkit配置 NVIDIA Runtime重启 Docker验证 NVIDIA Docker 支持验证 OpenGL 和图形支持测试 GUI 应用验证 OpenGLlio_sam_rviz-9] process has died确认…

AC+AP漫游实验

实验拓扑 实验要求 1.AP1服务vlan10,AP2服务vlan20,实现三层漫游 2.AP1与AP2为不同AP组,直接转发 实验步骤 1.配置VLAN放行相关流量 交换机与AP接口为trunk口并修改PVID为30 2.配置相关业务使得ap上线 3.配置vap上线,AP可用…

力扣92.反转链表Ⅱ

题目描述 题目链接92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left …

BERT和RoBERTa;双向表示与单向的简单理解

目录 BERT和RoBERTa大型预训练语言模型 BERT的原理 RoBERTa的原理 举例说明 双向表示与单向的简单理解 除了预训练语言模型,还有什么模型 一、模型类型与结构 二、训练方式与数据 三、应用场景与功能 四、技术特点与优势 BERT和RoBERTa大型预训练语言模型 BERT(Bi…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下&#xff0c;创建腾讯云短信发送工厂并命名为TencentSmsSender。记住&#xff0c;一定要在腾讯云短…

SD-WAN 2.0 在金融行业的典型应用场景

目录 全扁平化组网 场景需求 应用方案 SD-WAN 2.0 在金融行业的创新实践 SD-WAN5G提高金融行业网络接入可靠性 全扁平化组网 随着金融机构数字化转型的推进&#xff0c;机构业务的多样性、复杂性、 个性化等要求&#xff0c;对现有的金融机构网络架构与网管人员运维模式提出…

Next.js 新手容易犯的错误 | All about “use client“ (2)

在上一篇文章中&#xff08;Next.js 新手容易犯的错误 | All about "use client" (1)&#xff09;&#xff0c;我们探讨了 Next.js 中服务端组件和客户端组件的运行机制以及常见的使用误区。 这篇文章将作为续集&#xff0c;进一步分析更多开发中容易遇到的问题&…

优化SEO策略的关键在于长尾关键词的有效运用

内容概要 在数字营销的快速发展背景下&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;策略的制定显得尤为重要。而长尾关键词作为一种有效的关键词策略&#xff0c;正逐渐成为提升搜索引擎排名的重要工具。长尾关键词通常由三到四个词组成&#xff0c;具体而具有针对性&…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升&#xff0c;临床机器学习技术发展迅速&#xff0c;但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

​​​​​​​移远通信基于高通平台发布可集成边缘计算功能的5G MBB解决方案

在5G技术与人工智能深度融合的背景下&#xff0c;各行各业正迎来前所未有的创新机遇。为了加速5G移动宽带&#xff08;MBB&#xff09;行业向智能化转型&#xff0c;并简化边缘计算应用的开发流程&#xff0c;移远通信近期隆重推出了基于骁龙5G调制解调器及射频系统打造&#x…

六、文本搜索工具(grep)和正则表达式

一、grep工具的使用 1、概念 grep&#xff1a; 是 linux 系统中的一个强大的文本搜索工具&#xff0c;可以按照 正则表达式 搜索文本&#xff0c;并把匹配到的行打印出来&#xff08;匹配到的内容标红&#xff09;。 2、语法 grep [options]…… pattern [file]…… 工作方式…

【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法

实验 3&#xff1a;集线器和交换器的区别及交换器的自学习算法 一、 实验目的 加深对集线器和交换器的区别的理解。 了解交换器的自学习算法。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、熟悉集线器和交换器的区别 (1) 第一步&#xff1a;构建网络…

linux-安全-iptables防火墙基础笔记

目录 一、 iptables链结构 五链 二、 iptables表结构 四表 三、 匹配流程 四、 语法 五、 匹配 1. 通用匹配 2. 隐含匹配 3. 显示匹配 六、 SNAT 七、 DNAT 八、 规则备份及还原 1. 备份 2. 还原 这篇将讲解iptables防火墙的基础知识 一、 iptables链结构 规则…

一个实用的端到端的深度学习库存模型

G1 文章信息 文章题为“A Practical End-to-End Inventory Management Model withDeep Learning”&#xff0c;该文于2022年发表至“MANAGEMENT SCIENCE”。文章的核心是提出了端到端的框架用于多周期库存补货问题。 2 摘要 文章研究了一个数据驱动的多周期库存补货问题&am…

<工具 Claude Desktop> 配置 MCP server 连接本地 SQLite, 本机文件夹(目录) 网络驱动器 Windows 11 系统

也是在学习中... 起因&#xff1a; 抖音博客 艾克AI分享 他的视频 #143《Claude开源MCP彻底打破AI的信息孤岛》 提到: Claude开源的MCP太强了&#xff0c;视频后面是快速演示&#xff0c;反正看了好几遍也没弄明白。菜单都不一样&#xff0c;感觉用的不是同一家 Claude. 探…

交易所 Level-2 历史行情数据自动化导入攻略

用户部署完 DolphinDB 后&#xff0c;需要将历史股票数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。DolphinDB 开发了 ExchData 模块&#xff0c;主要用于沪深交易所 Level-2 行情原始数据的自动化导入&#xff0c;目前已支持的数据源包括&#xff1a; 沪…

matlab finv()函数解释 F分布 和 逆累积分布函数 卡方分布

1.Earths flattening 翻译并解释含义 "Earths flattening" 翻译为中文是“地球的扁率”。 含义解释&#xff1a; 地球的扁率是指地球形状偏离完美球形的程度。地球并非一个完美的球体&#xff0c;而是一个扁球体&#xff0c;即在两极略微扁平&#xff0c;赤道略微…

Istio笔记01--快速体验Istio

Istio笔记01--快速体验Istio 介绍部署与测试部署k8s安装istio测试istio 注意事项说明 介绍 Istio是当前最热门的服务网格产品&#xff0c;已经被广泛应用于各个云厂商和IT互联网公司。企业可以基于Istio轻松构建服务网格&#xff0c;在接入过程中应用代码无需更改&#xff0c;…