pyqt样式表语法笔记(上)
由于软件课设的缘由开始学习使用pyqt4,才发现原来它也有样式表,并且语法跟css基本相同,并且一些功能实现起来感受比js要简单方便得多。但愿以后桌面软件开发过程当中可能遇到的各类bug不会让我失去对pyqt的好感。css
下面主要是通过我各类测试、瞎写以后获得的一些总结,也就是说一些经常使用的语法或者其余须要注意的地方。html
-
要写样式表能够直接在Qt Designer里编辑,官网给出的资料请参考以下连接
QSS样式表规则
经常使用命令行--转化文件python
- # 将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")
经常使用语法web
-
1.修改label的颜色、大小等
self.label_id.setStyleSheet("color:red;")
- @pyqtSignature("")
- def on_PushButton1_clicked(self):
- self.l1.setStyleSheet("color:red;")
以上代码是一小部分的截取,稍微解释一下。
@pyqtSignature("") 是装饰器,用于给槽函数传递参数。app
函数名on_PushButton1_clicked表示QPushButton的id名是“PushButton1”,只要用户点击这个按键,就会触发下面的语句,即修改label(同理其id名为l1)的样式表ide
(如下的例子同理,除特殊状况再也不作具体介绍。)函数
-
2.设置文本框的内容
self.lineEdit.setText("修改文本框内容")
- @pyqtSignature("")
- def on_PushButton2_clicked(self):
- self.lineEdit.setText("修改文本框内容")
若要重置文本框,则可设置setText(''),即设为空字符。学习
单行文本框lineEdit测试
- content = self.lineEdit.text()
多行文本框textBrowser字体
- content = self.textBrowser.toPlainText()
- self.textEdit.append("要添加的内容")
使用场景:当咱们安装软件的时候,老是会有一个所谓的"协议",而后问咱们同不一样意,而后没办法,咱们只能选赞成咯~~
可是使用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
两者的主要做用是会发射"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')