当前位置 : 主页 > 编程语言 > 其它开发 >

PyQt5 基本语法(八):样式控制

来源:互联网 收集:自由互联 发布时间:2022-05-30
目录 样式控制 一、 简介 1、 基本概念 2、 使用 2.1 局部设置 2.2 全局设置 二、 QSS 样式表 1、 QSS 选择器 1.1 通配符选择器 1.2 类型选择器 1.3 类选择器 1.4 ID 选择器 1.5 属性选择器 1.6 后

目录
  • 样式控制
    • 一、 简介
      • 1、 基本概念
      • 2、 使用
        • 2.1 局部设置
        • 2.2 全局设置
    • 二、 QSS 样式表
      • 1、 QSS 选择器
        • 1.1 通配符选择器
        • 1.2 类型选择器
        • 1.3 类选择器
        • 1.4 ID 选择器
        • 1.5 属性选择器
        • 1.6 后代选择器
        • 1.7 子选择器
        • 1.8 子控件选择器
      • 2、 QSS 伪状态
        • 2.1 描述
        • 2.2 常见伪状态
      • 3、 QSS 声明
        • 3.1 背景属性
        • 3.2 边框属性
        • 3.3 box 属性
        • 3.4 字体属性
        • 3.5 外边距属性
        • 3.6 内边距属性
        • 3.7 定位属性
        • 3.8 文本属性

样式控制 一、 简介 1、 基本概念

QSS —— Qt 样式表

语法:

选择器:伪状态 {
    声明
}

用来自定义控件外观的一种机制

可以将其类比CSS;但是没有CSS强大

  • 选择器少
  • 属性少
  • 有些属性仅适用部分控件
2、 使用 2.1 局部设置

指定需要设置外观的控件,调用该控件的 setStyleSheet(qss_sheet_str)

参考作用范围:

  • 控件本身
  • 子控件

最终作用范围:

  • 通过选择器二次筛选
2.2 全局设置

指定全局的 QApplication 对象,调用 app.setStyleSheet(qss_sheet_str)

参考作用范围:

  • 应用程序所有控件

最终作用范围:

  • 通过选择器二次筛选
app = QApplication(sys.avgs)
# text.qss 是我们保存的样式表
with open("text.qss", "r") as f:
    content = f.read()
    app.setStyleSheet(content)
二、 QSS 样式表 1、 QSS 选择器

作用:指明哪些控件会受到样式的作用

1.1 通配符选择器

使用 * 来匹配对象内所有的控件

* {
    background-color: red;
}
1.2 类型选择器

通过控件类型来匹配控件(包含子类)

QWidget {
    background-color: red;  /* 匹配所有的 QWidget 控件,包括继承了 QWidget 类的子类 */
}
QPushButton {
    background-coloc: red;  /* 匹配所有的 QPushButton 控件,包括继承了 QPushButton 类的子类 */
}
1.3 类选择器

通过控件类型来匹配控件(不包含子类)

.QPushButton {
    background-color: red;  /* 匹配所有的 QPushButton 控件,不包含子类 */
}
1.4 ID 选择器

通过 objName 来匹配控件,注意其与CSS选择器里面的ID不一样,它可以有多个

#hehe {
	background-color: red;  /* 匹配 setObjectName("hehe") 的控件 */
}
1.5 属性选择器

通过属性值来匹配控件

QPushButton[name="warning"] {
    background-color: red;  /* 匹配 QPushButton类型控件内, setProperty("name", "warning") 的控件 */
}
QPushButton[name] {
    background-color: red;  /* 匹配 QPushButton类型控件内,拥有属性name这个键的控件 */
}
1.6 后代选择器

通过父控件的(直接或间接)子控件来筛选控件

QDialog QPushButton {
    background-color: red;  /* 只匹配所有QDialog中包含的QPushButton 控件 */
}
1.7 子选择器

通过父控件的(直接)子控件来筛选控件

QDialog>QPushButton {
    background-color: red;  /* 只匹配所有QDialog中,其儿子QPushButton控件,不包含孙子 */
}
1.8 子控件选择器

用来筛选一个复合控件上的子控件

QCheckBox::indicator {
    image: path;  /* 设置复选框前面的选择图标,语法:复合控件::子控件 */
}

常见子控件

子控件 描述 ::add-line 在QScrollBar中跳转下一行的按钮 ::add-page 在QScrollBar中滑动条和add-line之间的区域 ::branch 在QTreeView中的分支指示器 ::chunk 在QProgressBar中的进度块 ::close-button 在QDockWidget或QTabBar选项卡的关闭按钮 ::corner 在QAbstractScrollArea中两个滚动条之间的角落 ::down-arrow 在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向下箭头 ::down-button 在QScrollBar或QSpinBox中的向下按钮 ::drop-down 在QComboBox中的下拉框 ::float-button 在QDockWidget中的浮动按钮 ::groove 在QSlider中的滑动槽 ::indicator 在QAbstractItemVIew、QCheckBox、QRadioButton、可选中的菜单项或可选中的QGroupBox中的指示器 ::handle 在QScrollBar、QSplitter和QSlider中的操作条(滑动条) ::icon 在QAbstractItemVIew或QMenu中的图标 ::item 在QAbstractItemVIew、QMenuBar、QMenu或QStatuBar中的一项 ::left-arrow 在QScrollBar中的向左箭头 ::left-corner 在QTabWidget中的左上角 ::menu-arrow 带有菜单的QToolButton中的箭头 ::menu-button 在QToolButton中的菜单按钮 ::menu-indicator 在QPushButton中的菜单指示器 ::right-arrow 在QMenu或QScrollBar中的向右箭头 ::pane 在QTabWidget中的边或框 ::right-corner 在QTabWidget中的右上角 ::scroller 在QMenu或QTabBar中的滚动条 ::section 在QHeaderView中的区块 ::separator 在QMenu或QMainWIndow中分隔条 ::sub-line 在QScrollBar中跳转上一行的按钮 ::sub-page 在QScrollBar中滑动条和sub-line之间的区域 ::tab 在QTabBar或QToolBox中选项卡 ::tab-bar 在QTabWidget中的选项卡栏 ::tear 在QTabBar中的tear指示器 ::tearoff 在QMenu中的tear-off指示器 ::text 在QAbstractItemView中的文本 ::title 在QGroupBox或QDockWidget中的标题栏 ::up-arrow 在QComboBox、QHeaderView(排序指示器)、QScrollBar或QSpinBox的向上箭头 ::up-button 在QScrollBar或QSpinBox中的向上按钮 2、 QSS 伪状态 2.1 描述

作用:限制控件只能在某种状态下,被样式表作用

语法:选择器:伪状态

2.2 常见伪状态 伪状态 作用 :active 此状态在widget驻留在活动窗口中时设置。 :adjoins-item 此状态在QTreeView的::branch与项相邻时设置。 :alternate 当QAbstractItemView::ternatingRowColors()设置为true时,将为绘制QAbstractItemView的行时的每隔一行设置此状态。 :bottom 该项目位于底部。例如,标签位于底部的QTabBar。 :checked 该项目已选中。例如,QAbstractButton的选中状态。 :closable 这些项目可以关闭。例如,QDockWidget打开了QDockWidget::DockWidgetClosable功能。 :default 该项目为默认值。例如,QMenu中的默认QPushButton或默认操作。 :disabled 该项目已禁用。 :editable QComboBox是可编辑的。 :edit-focus 该项具有编辑焦点(请参见QStyle::State_HasEditFocus)。此状态仅适用于Qt扩展应用程序。 :enabled 该项目已启用。 :exclusive 该项目是独占项目组的一部分。例如,独占QActionGroup中的菜单项。 :first 该项目是(列表中的)第一个项目。例如,QTabBar中的第一个选项卡。 :flat 这件物品是平的。例如,平面QPushButton。 :floatable 这些项目可以浮动。例如,QDockWidget打开了QDockWidget::DockWidgetFloatable功能。 :focus 该项具有输入焦点。 :has-children 该项目具有子项。例如,QTreeView中具有子项的项。 :has-siblings 该项目有同级。例如,QTreeView中的同级项。 :horizontal 该项目具有水平方向 :hover 鼠标悬停在该项目上。 :indeterminate 该项具有不确定状态。例如,部分选中QCheckBox或QRadioButton。 :last 该项是(列表中的)最后一项。例如,QTabBar中的最后一个选项卡。 :left 该项目位于左侧。例如,选项卡位于左侧的QTabBar。 :maximized 该项目将最大化。例如,最大化的QMdiSubWindow。 :middle 项目在中间(在列表中)。例如,QTabBar中不在开头或结尾的制表符。 :minimized 该项目被最小化。例如,最小化的QMdiSubWindow。 :movable 物品可以四处移动。例如,QDockWidget打开了QDockWidget::DockWidgetMoovable功能。 :no-frame 该项目没有框架。例如,无框架的QSpinBox或QLineEdit。 :non-exclusive 该项是非独占项组的一部分。例如,非独占QActionGroup中的菜单项。 :off 对于可以切换的项目,这适用于处于“关闭”状态的项目。 :on 对于可以切换的项目,这适用于处于“打开”状态的widget。 :only-one 该项目是(列表中的)唯一项目。例如,QTabBar中的一个单独的选项卡。 :open 该项目处于打开状态。例如,QTreeView中的展开项,或具有打开菜单的QComboBox或QPushButton。 :next-selected 选择下一项(在列表中)。例如,QTabBar的选定选项卡紧挨着该项。 :pressed 正在使用鼠标按下该项。 :previous-selected 选择上一项(在列表中)。例如,QTabBar中选定选项卡旁边的选项卡。 :read-only 该项目标记为只读或不可编辑。例如,只读QLineEdit或不可编辑的QComboBox。 :right 该项目位于右侧。例如,选项卡位于右侧的QTabBar。 :selected 该项目即被选中。例如,QTabBar中的选定选项卡或QMenu中的选定项目。 :top 该项目位于顶部。例如,选项卡位于顶部的QTabBar。 :unchecked 该项目处于取消选中状态。 :vertical 该项目具有垂直方向。 :window widget是窗口(即顶层小部件)

不同的控件可能有某种特定的伪状态,无法通用,具体查看官方文档

! 表示否,与当前状态相反

可以连续使用:

  • :hover:checked:鼠标在控件上面,并且选中时
3、 QSS 声明

QSS的强大在于组合功能的强大,这里只是简单介绍基本功能,将简单功能组合起来才能实现好看的效果

3.1 背景属性 属性 描述 CSS background 在一个声明中设置所有的背景属性。 1 background-attachment 设置背景图像是否固定或者随着页面的其余部分滚动。 1 background-color 设置元素的背景颜色。 1 background-image 设置元素的背景图像。 1 background-position 设置背景图像的开始位置。 1 background-repeat 设置是否及如何重复背景图像。 1 background-clip 规定背景的绘制区域。 3 background-origin 规定背景图片的定位区域。 3 background-size 规定背景图片的尺寸。 3 3.2 边框属性 属性 描述 CSS border 在一个声明中设置所有的边框属性。 1 border-bottom 在一个声明中设置所有的下边框属性。 1 border-bottom-color 设置下边框的颜色。 2 border-bottom-style 设置下边框的样式。 2 border-bottom-width 设置下边框的宽度。 1 border-color 设置四条边框的颜色。 1 border-left 在一个声明中设置所有的左边框属性。 1 border-left-color 设置左边框的颜色。 2 border-left-style 设置左边框的样式。 2 border-left-width 设置左边框的宽度。 1 border-right 在一个声明中设置所有的右边框属性。 1 border-right-color 设置右边框的颜色。 2 border-right-style 设置右边框的样式。 2 border-right-width 设置右边框的宽度。 1 border-style 设置四条边框的样式。 1 border-top 在一个声明中设置所有的上边框属性。 1 border-top-color 设置上边框的颜色。 2 border-top-style 设置上边框的样式。 2 border-top-width 设置上边框的宽度。 1 border-width 设置四条边框的宽度。 1 outline 在一个声明中设置所有的轮廓属性。 2 outline-color 设置轮廓的颜色。 2 outline-style 设置轮廓的样式。 2 outline-width 设置轮廓的宽度。 2 border-bottom-left-radius 定义边框左下角的形状。 3 border-bottom-right-radius 定义边框右下角的形状。 3 border-image 简写属性,设置所有 border-image-属性。 3 border-image-outset 规定边框图像区域超出边框的量。 3 border-image-repeat 图像边框是否应平铺(repeated)、铺满(rounded)或拉伸(stretched)。 3 border-image-slice 规定图像边框的向内偏移。 3 border-image-source 规定用作边框的图片。 3 border-image-width 规定图片边框的宽度。 3 border-radius 简写属性,设置所有四个 border-*-radius 属性。 3 border-top-left-radius 定义边框左上角的形状。 3 border-top-right-radius 定义边框右下角的形状。 3 box-shadow 向方框添加一个或多个阴影。 3 3.3 box 属性 属性 描述 CSS overflow-x 如果内容溢出了元素内容区域,是否对内容的左/右边缘进行裁剪。 3 overflow-y 如果内容溢出了元素内容区域,是否对内容的上/下边缘进行裁剪。 3 overflow-style 规定溢出元素的首选滚动方法。 3 rotation 围绕由 rotation-point 属性定义的点对元素进行旋转。 3 rotation-point 定义距离上左边框边缘的偏移点。 3 3.4 字体属性 属性 描述 CSS font 在一个声明中设置所有字体属性。 1 font-family 规定文本的字体系列。 1 font-size 规定文本的字体尺寸。 1 font-size-adjust 为元素规定 aspect 值。 2 font-stretch 收缩或拉伸当前的字体系列。 2 font-style 规定文本的字体样式。 1 font-variant 规定是否以小型大写字母的字体显示文本。 1 font-weight 规定字体的粗细。 1 3.5 外边距属性 属性 描述 CSS margin 在一个声明中设置所有外边距属性。 1 margin-bottom 设置元素的下外边距。 1 margin-left 设置元素的左外边距。 1 margin-right 设置元素的右外边距。 1 margin-top 设置元素的上外边距。 1 3.6 内边距属性 属性 描述 CSS padding 在一个声明中设置所有内边距属性。 1 padding-bottom 设置元素的下内边距。 1 padding-left 设置元素的左内边距。 1 padding-right 设置元素的右内边距。 1 padding-top 设置元素的上内边距。 1 3.7 定位属性 属性 描述 CSS bottom 设置定位元素下外边距边界与其包含块下边界之间的偏移。 2 clear 规定元素的哪一侧不允许其他浮动元素。 1 clip 剪裁绝对定位元素。 2 cursor 规定要显示的光标的类型(形状)。 2 display 规定元素应该生成的框的类型。 1 float 规定框是否应该浮动。 1 left 设置定位元素左外边距边界与其包含块左边界之间的偏移。 2 overflow 规定当内容溢出元素框时发生的事情。 2 position 规定元素的定位类型。 2 right 设置定位元素右外边距边界与其包含块右边界之间的偏移。 2 top 设置定位元素的上外边距边界与其包含块上边界之间的偏移。 2 vertical-align 设置元素的垂直对齐方式。 1 visibility 规定元素是否可见。 2 z-index 设置元素的堆叠顺序。 2 3.8 文本属性 属性 描述 CSS color 设置文本的颜色。 1 direction 规定文本的方向 / 书写方向。 2 letter-spacing 设置字符间距。 1 line-height 设置行高。 1 text-align 规定文本的水平对齐方式。 1 text-decoration 规定添加到文本的装饰效果。 1 text-indent 规定文本块首行的缩进。 1 text-transform 控制文本的大小写。 1 unicode-bidi 设置文本方向。 2 white-space 规定如何处理元素中的空白。 1 word-spacing 设置单词间距。 1 hanging-punctuation 规定标点字符是否位于线框之外。 3 punctuation-trim 规定是否对标点字符进行修剪。 3 text-emphasis 向元素的文本应用重点标记以及重点标记的前景色。 3 text-justify 规定当 text-align 设置为 "justify" 时所使用的对齐方法。 3 text-outline 规定文本的轮廓。 3 text-overflow 规定当文本溢出包含元素时发生的事情。 3 text-shadow 向文本添加阴影。 3 text-wrap 规定文本的换行规则。 3 word-break 规定非中日韩文本的换行规则。 3 word-wrap 允许对长的不可分割的单词进行分割并换行到下一行。 3

【转自:外国服务器 http://www.558idc.com/shsgf.html转载请说明出处】

网友评论