木辛老师的编程课堂之Python和Qt实战慕课软件开发:入门Qt样式表
off999 2024-10-18 08:09 39 浏览 0 评论
美观的软件界面,可以有效的提升用户粘性;PyQt中使用QSS可以快速、简单的实现修改控件的样式。快点跟着木辛老师一起学习吧!
请点击右上角“关注”按钮关注我们哟:跟着木辛老师学习Python编程知识,变身快乐的编程达人吧~
上一节课,我们给大家留了一个问题:如何将关闭按钮的边框去掉。
初涉QSS
为了解决这个问题,需要先给大家讲解一个新的知识点,就是Qt的样式表:QSS。
QSS是用来自定义控件外观的一种机制,它参考了CSS的很多内容,但是QSS的功能要比CSS的弱很多,主要体现在选择器比较少、属性比较少,而且并不是所有的属性都能应用到Qt的控件上。
不过,使用QSS来美化Qt的控件,可以实现页面的美化和代码分开,有非常有利于后期代码维护的。
例子实战
就先以关闭按钮为例,来看一下通过使用QSS如何实现将其边框隐藏吧。代码可以这么写:
首先定义了一个变量:qss_style,这个变量使用三重引号字符串定义了多行属性。
代码中首先使用了
#btn_close_window
以#号开头的这种方式,是QSS选择器中的一种,叫做ID选择器。
#btn_close_window会获取所有ID为btn_close_window的控件,这里的ID就是定义的控件的名字,是在Qt Designer工具的属性编辑器中的objectName指定的值。
通过这种方式,Qt就可以获取到关闭按钮的实例,从而可以为这个控件增加样式;
所以,紧接着下方的代码块
{ background-color:transparent; }
就是定义了,这个按钮的背景颜色是透明样式。
定义好了按钮样式之后,需要将这个定义通过setStyleSheet方法传入主窗口的,才可以生效哟!
让我们来运行一下程序看看效果吧~
嗯,看着效果还不错呢~
我们初步完成了按钮样式的学习,关闭按钮部分也非常美观的矗立在主窗口中了。
接下来呢,木辛老师将会带领大家进一步学习一下有关QSS的知识。
什么是QSS
通过刚才的实例,我们看到了QSS的语法规则和CSS的很相像,也是由两部分组成:
- 选择器
- 声明
其中选择器是指定需要修改哪些控件的样式;而声明部分则是指定哪些属性应该设置于控件之上。声明这一部分内容,是“属性:值”对的方式存在,且需要是使用分号(;)分隔不同属性值,使用大括号({})将所有的声明包含在内。
QSS选择器类型
在上方的实例中,我们介绍了ID选择器;其实呀,在QSS中,选择器的类型还有好多:
- 通配符选择器:*,可以匹配所有的控件
- 类型选择器:QPushButton,匹配所有的QPushButton类及其子类的实例
- 属性选择器:QPushButton[name=“btn_close_window”],匹配所有的name属性是btn_close_window的QPushButton实例
- 类选择器:.QPushButton,匹配所有的QPushButton实例,但是不会匹配器子类。一定要留意前边的一个点号哟!
- ID选择器:就是前面实例中提到的
- 后代选择器:QDialog QPushButton,匹配所有的QDialog容器中包含的QPushButton控件
- 子选择器:QDialog > QPushButton,匹配所有的QDialog容器中包含的QPushButton,其中QDialog必须是QPushButton的直接父容器
QSS中的所有的选择器都是可以联合使用的,并且支持一次设置很多种选择器类型哟!不过呢,要使用英文的逗号分隔开。
比如像这样
#btn_close_window,#btn_register,#lbl_show_title
表示这些ID使用同一个规则;
#main_window QPushButton
表示选择所有ID为main_window的容器中包含的所有的QPushButton控件。
QSS的子控件
在PyQt的开发过程中,会遇到一些比较复杂的复合控件,比如QComboBox,QListWidget。这个时候我们可能需要定义一些比较复杂的样式,比如修改控件的下拉箭头的图片,滚动条的样式等。
为了应对这些需求,QSS提供了子控件选择器,其应用在一些复合控件上,可以比较简单的定义不同状态的样式。比如:
QComboBox::drop-down { image : url(dropdown.png) }
这个样式就定义了所有QComboBox的下拉箭头的图片,图片文件为dropdown.png。
需要注意的是:子控件选择器实际上是选择复合器的一部分,只是对复合控件的一部分应用样式,就像刚才我们提到的为QComboBox的下拉箭头替换图片那样。
QSS的伪装态
还有一种情况,在使用软件的过程中,如果用户将鼠标放置到某个控件上,可能希望等发生一些变化,比如:当鼠标经过某个控件的时候,该控件的背景色改成红色等等;或者下拉列表选中,或者改变焦点的时候采用不同样式,选中或者非选中状态下的样式等等。
针对这种情况下的样式修改,QSS提供伪装态选择器来解决。
QSS伪装态选择器是以冒号开头的一个选择表达式,比如
:hover
表示当鼠标经过的时候的状态。伪装态选择器限制了当控件处于某一种状态时才可以使用的QSS规则,它只能描述一个空着或者一个符合控件的子控件的状态,所以,只能将其放在选择器的最后边。举个例子:
QComboBox:hover { background-color: red; }
这一句表示的是,当鼠标经过QComboBox的时候,背景色变化为红色,该伪装态 :hover描述的就是QComboBox的状态。
再举另外一个例子:
QComboBox::drop-down:hover { background-color: red; }
这一句则表示:鼠标经过QComboBox的下拉箭头的时候,该下拉箭头编程红色。
另外,伪装态还可以使用一个感叹号来表示状态,比如鼠标没有经过某个控件的时候触发的状态可以使用 :!hover表示,代码可以这么写:
QComboBox:!hover { background-color: green;}
这一句表示:当鼠标没有经过QComboBox的时候,这个控件的背景色是绿色的。
好了,今天的课程咱们就先讲到这里吧!
课程回顾
今天的课程,主要讲了如何使用QSS改变控件的样式;另外还讲了QSS选择器的6种基本类型和2种高级类型。
希望大家通过木辛老师的课程,牢固掌握基础知识;并通过今天的课程中例子,多多练习哟!
请持续关注木辛老师的编程课哟,后续更多精彩陆续到来!
快乐编程,快乐成长!
相关推荐
- 默认浏览器怎么改(软件默认浏览器怎么改)
-
在浏览器中设置默认浏览器的方法略有不同,以下是在常见的几个浏览器中设置默认浏览器的方法:1.在Windows10中设置Edge浏览器为默认浏览器: a.打开...
- 显卡驱动程序是什么
-
NVIDIA驱动是一种软件,用于管理安装在计算机上的NVIDIA图形处理器,以确保它们正常运行。NVIDIA是一家知名的GPU(图形处理器)制造商,提供各种高性能显卡和集成GPU,这些设备需要相应的驱...
-
- 扣扣空间电脑版登录入口(qq空间电脑版官网网站登录)
-
可以通过以下链接登陆进入QQ空间:https://qzone.qq.com/QQ空间(Qzone)是腾讯公司于2005年开发出来的一个具有个性空间,具有博客(blog)的功能,自问世以来受到众多人的喜爱。在QQ空间上可以书写日志、写说说...
-
2025-12-27 22:03 off999
- 怎么还原(怎么还原手机出厂设置)
-
1、首先,在Excel工作表中依次点击左上角的文件图标——Excel选项。2、然后,在弹出来的Excel选项的小窗口中点击左侧的保存菜单栏目。3、接着,在保存菜单栏目的右侧可以看到自动恢复文件的位置,...
- 怎么用360升级系统版本(怎么用360更新系统)
-
360可以下载补丁更新漏洞,对系统进行升级(在360修复漏洞里面点立即修复就行了)升级电脑系统大多数情况下是指低版本的系统升级到高版本的系统,比如说从windows2000升到xp,从vista升级到...
- 360助手电脑版客户端(360软件助手电脑)
-
还是非常好的,都是能够让他可以直接拦截病毒,同时能够让他清理内存,而且能够让这个有非常好的手机应用软件权限优化作用。360手机助手是360推出的手机助手,拥有海量软件和游戏轻松下载,炫彩主题壁纸随心点...
- 手机360助手官网下载(手机360助手最新版下载)
-
1、在电脑上安装360安全卫士打开它里边里的360手机助手2、手机设置系统设置——应用程序——未知来源打钩——开发USB调试打钩允许模拟位置打钩3、连接电脑、手机,并打开手机助手4、手机助...
- window10安装密钥(win10安装密钥命令)
-
以专业版为例,win10密钥是由25个字符组成的代码,用于激活windows,根据用户获取windows10副本的方式,需要由25个字符组成的产品密钥或数字许可证才能激活它。数字许可证是windows...
- 电脑windows7无法连接到网络
-
解决方法:1、在使用电脑的时候,出现了网络连接不可用的问题,可能造成的原因主要有网络连接被禁用,DNS和IP地址获取不对,网卡驱动损坏,网线没有插好。2、鼠标右键网络连接图标进去,点击更改适配器设置。...
- 路由器静态ip填什么(路由器的静态ip)
-
手机登入路由器web界面,输入用户名和密码,第一次弹出设置向导,选择静态ip上网方式,填写可以上网的ip地址,如ip192.168.1.188子网掩码255.255.255.0网关192.168....
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
