17. 分割类控件

发布时间 2023-12-28 18:06:34作者: 星光樱梦

一、分割类控件

  分割类控件主要对窗口中进行功能划分,使窗口看起来更加合理,美观。PySide 中提供了分割线和弹簧两种类型的分割类控件。

  我们可以在终端中使用 pip 安装 pyside 模块。

pip install pyside6

二、分割线

  PySide 提供两个分割线控件,分别是水平分割线(HorizontalLine)和垂直分割线(VerticalLine),但这两个分割线控件对应的类都是 QFrame 类,该类提供了一个 setFrameShape(arg__1) 方法,通过设置该方法的参数,可以将分割线显示为水平或者垂直。

  QFrame 类常用方法及其说明如下:

方法 说明
setFrameShape(arg__1) 设置分割线方向,取值如下:
- QFrame.Shape.HLine:水平分割线
QFrame.Shape.VLine:垂直分割线
setFrameShadow(arg__1) 设置分割线的显示样式,取值如下:
QFrame.Shadow.Plain:无阴影
- QFrame.Shadow.Raised:有边框阴影,并且凸起显示
QFrame.Shadow.Sumken:有边框阴影,并且下沉显示,这是默认设置
setLineWidth(arg__1) 设置分割线宽度
setMidLineWidth(arg__1) 设置分割线中间线的宽度
import sys

from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtWidgets import QFrame

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)

    # 2.创建一个窗口
    w = QMainWindow()

    # 3.设置窗口对象大小
    w.resize(700, 500)

    # 4.创建分割线控件对象,并指定父窗口
    frame = QFrame(w)

    # 5.设置分割线框控件的位置和尺寸
    frame.setGeometry(100, 100, 500, 300)

    # 6.设置分割线方向
    frame.setFrameShape(QFrame.Shape.HLine)

    # 7.设置分割线的显示样式
    frame.setFrameShadow(QFrame.Shadow.Raised)

    # 8.设置分割线宽度
    frame.setLineWidth(10)

    # 9.设置分割线中间线的宽度
    frame.setMidLineWidth(5)

    # 10.展示窗口
    w.show()

    # 11.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

三、弹簧

  PySide 中提供了两种弹簧,分别是 HorizontalSpacer 和 VerticalSpacer,但这两种控件对应的类都是 QSpacerItem 类,水平和垂直主要通过宽度和高度(水平弹簧默认的宽度和高度分别是 40, 20;而垂直弹簧的默认宽度和高度分别是 20、40)进行区分。

  QSpacerItem 弹簧主要用于布局管理器中,用来使布局管理器中的控件更加合理。

import sys

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

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)

    # 2.创建一个窗口
    w = QWidget()

    # 3.设置窗口对象大小
    w.resize(700, 500)

    # 4.创建布局
    hBoxLayout = QHBoxLayout(w)

    # 5.将按钮添加到水平布局
    pushButton1 = QPushButton("按钮1")
    hBoxLayout.addWidget(pushButton1)

    # 6.创建弹簧,并添加到水平布局中
    spacerItem = QSpacerItem(300, 20)
    hBoxLayout.addSpacerItem(spacerItem)

    pushButton2 = QPushButton("按钮2")
    hBoxLayout.addWidget(pushButton2)

    # 7.展示窗口
    w.show()

    # 8.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())