目录
- 一、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())