pyqt样式表语法笔记(上) --原创
pyqt样式表语法笔记(上)
因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多。希望之后桌面软件开发过程中可能遇到的各种bug不会让我失去对pyqt的好感。
下面主要是经过我各种测试、瞎写之后得到的一些总结,也就是说一些常用的语法或者其他需要注意的地方。
-
要写样式表可以直接在Qt Designer里编辑,官网给出的资料请参考如下链接
QSS样式表规则
常用命令行--转化文件
- # 将ui文件转化为.py文件
- pyuic4 **.ui > **.py
- # 将qrc文件转化为.py文件
- pyrcc4 **.qrc > **.py
-
编写槽函数文件
代码示例
- from PyQt4.QtGui import QMainWindow
- from PyQt4.QtCore import pyqtSignature
- from PyQt4 import QtGui, QtCore
- from ui import Ui_MainWindow
- class MainWindow(QMainWindow, Ui_MainWindow):
- def __init__(self, parent=None):
- QMainWindow.__init__(self, parent)
- self.setupUi(self)
- @pyqtSignature("")
- def on_changeColor_clicked(self):
- self.l1.setStyleSheet("color:red")
常用语法
-
1.修改label的颜色、大小等
self.label_id.setStyleSheet("color:red;")
- @pyqtSignature("")
- def on_PushButton1_clicked(self):
- self.l1.setStyleSheet("color:red;")
以上代码是一小部分的截取,稍微解释一下。
@pyqtSignature("") 是装饰器,用于给槽函数传递参数。
函数名on_PushButton1_clicked表示QPushButton的id名是“PushButton1”,只要用户点击这个按键,就会触发下面的语句,即修改label(同理其id名为l1)的样式表
(以下的例子同理,除特殊情况不再做具体介绍。)
-
2.设置文本框的内容
self.lineEdit.setText("修改文本框内容")
- @pyqtSignature("")
- def on_PushButton2_clicked(self):
- self.lineEdit.setText("修改文本框内容")
若要重置文本框,则可设置setText(''),即设为空字符。
-
3.获取文本框中的内容
单行文本框lineEdit
- content = self.lineEdit.text()
多行文本框textBrowser
- content = self.textBrowser.toPlainText()
-
4.向文本框的原有内容基础上添加内容
- self.textEdit.append("要添加的内容")
-
5.radioButton使用介绍
使用场景:当我们安装软件的时候,总是会有一个所谓的"协议",然后问我们同不同意,然后没办法,我们只能选同意咯~~
但是使用radioButton会遇到如下问题。
(1). 将radio控件分类
因为pyqt默认会将所有radio控件互斥,所以只能选择一个radioButton,比如当我们要做一个问卷调查的时候,我先选了第一题的答案,刚选完第二题的答案,结果第一题答案因为互斥的关系没了,那岂不是很蛋疼,所以需要用到GroupBox来解决这个问题.如下图

(2). 耦合radio控件
还是以问卷为例,有的时候我们需要根据用户的选择进行相应题目的默认选择,比如他的学校选择了“北京大学”,那么属性那一栏应该选择“学霸”,而不是“学渣”
- @pyqtSignature("")
- def on_rb1_clicked(self):
- self.rb3.setChecked(True)
- @pyqtSignature("")
- def on_rb2_clicked(self):
- self.rb4.setChecked(True)
rb1-北京大学 rb2-家里蹲大学 rb3-学霸 rb4-学渣
setChecked(True) 表示选择该项
isChecked() 可以用于判断某选项是否被选择。若已被选择,就返回True
-
6.dial控件和slider控件


二者的主要作用是会发射"int"型的数值,默认是0-99,也可在Qt designer中自己设定,所以一般这两者用到的槽函数是valueChanged(self,value),注意,不同于上面几种控件,这两种是要传参的,所以装饰器需要稍微修改一下,详见下面带代码
- # 装饰器需要声明传入int型的变量
- @pyqtSignature("int")
- def on_dial_valueChanged(self,value):
- self.label_9.setStyleSheet("font-size:%dpx;" % value)
- self.label_10.setText(str(value))
这段代码的作用是,随着用户旋转dial控件,字体大小相应变化,右边的label显示当前字体的大小(即value)

-
7.对话框
-
(1) 提示对话框
QMessageBox.information(self,'标题','提示信息','OK','Cancel','其他')
解释:上面参数中的'OK','Cancel','其他'表示对话框的可选项,一般默认是OK.
另外从左至右依次返回0,1,2.
参考代码
- @pyqtSignature("")
- def on_information_clicked(self):
- info = QMessageBox.information(self, 'information', u'提示对话框', 'OK', 'Cancel', u'其他')
- print(info)

-
(2) 询问对话框
QMessageBox.question(self,'标题','询问信息')

-
(3) 警告对话框
QMessageBox.warning(self,'标题','提示信息')

-
(4) 严重警告对话框
QMessageBox.critical(self,'标题','提示信息')

-
(5) 关于对话框
QMessageBox.information(self,'标题','提示信息')

-
(6) AboutQt对话框
QMessageBox.information(self,'标题','提示信息')
这个是pyqt内置的,所以参数不能修改,只能像下面这样写
- @pyqtSignature("")
- def on_aboutQt_clicked(self):
- aboutQt = QMessageBox.aboutQt(self, 'AboutQt')

pyqt样式表语法笔记(上) --原创的更多相关文章
- pyqt样式表语法笔记(下)--原创
pyqt样式表语法笔记(下) python 启动界面 QSS pyqt 一.启动界面的设置 简单点~说话的方式简单点用一张静态图片作为程序启动界面为例. 原来的语句 python 7行 ...
- pyqt样式表语法笔记(中)--原创
pyqt样式表语法笔记(中) pyqt QSS python 样式表 一.弹窗 在日常的各种桌面软件的使用中,我们都会碰到弹窗.例如注册,登录的时候,会有相应的信息弹窗,这里就以信息收集弹窗为例进行弹 ...
- pyqt样式表语法笔记
pyqt样式表语法笔记 pyqt QSS python 样式表 因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多 ...
- pyqt样式表语法笔记(中)
pyqt样式表语法笔记(中) pyqt QSS python 样式表 一.弹窗 在日常的各种桌面软件的使用中,我们都会碰到弹窗.例如注册,登录的时候,会有相应的信息弹窗,这里就以信息收集弹窗为例进行弹 ...
- hive 标准hql建表语法格式
一.标准hql建表语法格式1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性) 具体参考官网界面:HIVE官网建表说明文档 CREATE [EXTERNAL] TABLE [IF NO ...
- PyQt样式设计
QSS QSS(Qt Style Sheets)即PyQt样式表,是用来定义控件外观的一种机制.QSS内部实现大量参考了CSS,但是功能没有CSS强大,主要体现在选择器少,属性少等. 使用QSS 格式 ...
- css input[type=file] 样式美化,input上传按钮美化
css input[type=file] 样式美化,input上传按钮美化 参考:http://www.haorooms.com/post/css_input_uploadmh
- 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示分割线.
一, 经历 1> 自定义plain 样式的 tableview,模拟器上不显示分割线,真机上却显示cell 下面的分割线. 2> 尝试使用表格的separatorStyle属性,尝试失败. ...
- Typora笔记上传到博客
Typora笔记上传到博客 Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版.它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本 ...
随机推荐
- mybatis关联查询,查询结果多条,却只返回一条记录
原因是:主表和子表的主键字段相同,可以使用别名!这是因为mybatis的内部实现机制决定的: MyBatis为了降低内存开销,采用ResultHandler逐行读取的JDBC ResultSet结果集 ...
- 基于canvas的二维码邀请函生成插件
去年是最忙碌的一年,实在没时间写博客了,看着互联网行业中一个又一个人的倒下,奉劝大家,健康要放在首位,保重身体.好了,言归正传,这是17年的第一篇博文,话说这天又是产品同学跑过来问我说:hi,lenn ...
- ios 动画学习的套路 (二)
有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! (一) 说说这两个三方库 ...
- iis7.0 ExtensionlessUrlHandler-Integrated-4.0解决方法
IIS7.0上部署网站,打开后500错误: 处理程序“ExtensionlessUrlHandler-Integrated-4.0” 在其模块列表中有一个错误模块“ManagedPipelineHan ...
- C/C++中慎用宏(#define)
宏的定义在程序中是非常有用的,但是使用不当,就会给自身造成很大的困扰.通常这种困扰为:宏使用在计算方面. 本例子主要是在宏的计算方面,很多时候,大家都知道定义一个计算的宏,对于编译和编程是多么的有用. ...
- View Controller Transition:京东加购物车效果
冬天已经过去了,阳光越来越暖洋洋的了.还记得上学的时候,老师总说"春天是播种的季节",而我还没在朋友圈许下什么愿望.一年了,不敢想象回首还能看到点什么,所以勇往直前.当被俗世所扰, ...
- Android 获取浏览器当前分享页面的截屏
Android 获取浏览器当前分享页面的截屏 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/BrowserScreenShotActivity 文中 ...
- 【UWP】列表项宽度自适应的实现
目的 在UWP开发中,我们常常用到两个显示列表的控件:ListView和GridView.而这两个列表控件在PC等大屏幕上如果能多列"智能"调整自己的大小(通常是根据当前窗口大小调 ...
- jQuery_第二章_定时器
- BZOJ 3652: 大新闻(数位DP+概率论)
不得不说数位DP和博弈论根本不熟啊QAQ,首先这道题嘛~~~可以分成两个子问题: 有加密:直接算出0~n中二进制每一位为0或为1分别有多少个,然后分位累加求和就行了= = 无加密:分别算出0~n中二进 ...