目录
- 一、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中的构造函数,初始化窗口的基本设置1self.setWindowTitle("这是Layout-Vertical Layouts") # titleself.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")# 将创建的按钮添加到layoutlayout.addWidget(button_1)layout.addWidget(button_2)layout.addWidget(button_3)# 设置窗口的布局centrel_widget.setLayout(layout)if __name__ == "__main__": # 这行确保这段程序作为主程序运行时才会执行以下代码app = QApplication(sys.argv) # 创建一个 QApplication 对象,接收命令行参数 sys.argvmain_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中的构造函数,初始化窗口的基本设置1self.setWindowTitle("水平布局!") # titleself.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.argvmain_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中的构造函数,初始化窗口的基本设置1self.setWindowTitle("垂直布局!") # titleself.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.argvmain_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, QPushButtonclass 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 sysfrom PySide6.QtWidgets import QApplication, QWidget, QHBoxLayout, QMainWindow, QPushButton, QSpacerItem
from PySide6.QtWidgets import QSizePolicy, QSpacerItemclass 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, QWidgetclass 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_widgetcentrel_window.setLayout(v_layout)if __name__ == "__main__":app = QApplication(sys.argv)main_window = Main_window()main_window.show()sys.exit(app.exec())