zoukankan      html  css  js  c++  java
  • pyqt样式表语法笔记(上) --原创

    pyqt样式表语法笔记(上)

    pyqt
    QSS
    python
    样式表

    因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多。希望之后桌面软件开发过程中可能遇到的各种bug不会让我失去对pyqt的好感。

    下面主要是经过我各种测试、瞎写之后得到的一些总结,也就是说一些常用的语法或者其他需要注意的地方。

    • 要写样式表可以直接在Qt Designer里编辑,官网给出的资料请参考如下链接
      QSS样式表规则

    常用命令行--转化文件

        python    3行
        python    3行
    1. # 将ui文件转化为.py文件 
    2. pyuic4 **.ui > **.py 
        python    3行
        python    3行
    1. # 将qrc文件转化为.py文件 
    2. pyrcc4 **.qrc > **.py 

    • 编写槽函数文件
      代码示例
        python    14行
        python    14行
    1. from PyQt4.QtGui import QMainWindow 
    2. from PyQt4.QtCore import pyqtSignature 
    3. from PyQt4 import QtGui, QtCore 
    4. from ui import Ui_MainWindow 
    5.  
    6. class MainWindow(QMainWindow, Ui_MainWindow): 
    7. def __init__(self, parent=None): 
    8. QMainWindow.__init__(self, parent) 
    9. self.setupUi(self) 
    10.  
    11. @pyqtSignature("") 
    12. def on_changeColor_clicked(self): 
    13. self.l1.setStyleSheet("color:red"

    常用语法

    • 1.修改label的颜色、大小等
      self.label_id.setStyleSheet("color:red;")
        python    4行
        python    4行
    1. @pyqtSignature("") 
    2. def on_PushButton1_clicked(self): 
    3. self.l1.setStyleSheet("color:red;"

    以上代码是一小部分的截取,稍微解释一下。
    @pyqtSignature("") 是装饰器,用于给槽函数传递参数。

    函数名on_PushButton1_clicked表示QPushButton的id名是“PushButton1”,只要用户点击这个按键,就会触发下面的语句,即修改label(同理其id名为l1)的样式表

    (以下的例子同理,除特殊情况不再做具体介绍。)

    • 2.设置文本框的内容
      self.lineEdit.setText("修改文本框内容")
        python    4行
        python    4行
    1. @pyqtSignature("") 
    2. def on_PushButton2_clicked(self): 
    3. self.lineEdit.setText("修改文本框内容"

    若要重置文本框,则可设置setText(''),即设为空字符。

    • 3.获取文本框中的内容

    单行文本框lineEdit

        python    2行
        python    2行
    1. content = self.lineEdit.text() 

    多行文本框textBrowser

        python    2行
        python    2行
    1. content = self.textBrowser.toPlainText() 
    • 4.向文本框的原有内容基础上添加内容
        python    2行
        python    2行
    1. self.textEdit.append("要添加的内容"
    • 5.radioButton使用介绍

    使用场景:当我们安装软件的时候,总是会有一个所谓的"协议",然后问我们同不同意,然后没办法,我们只能选同意咯~~
    但是使用radioButton会遇到如下问题。
    (1). 将radio控件分类
    因为pyqt默认会将所有radio控件互斥,所以只能选择一个radioButton,比如当我们要做一个问卷调查的时候,我先选了第一题的答案,刚选完第二题的答案,结果第一题答案因为互斥的关系没了,那岂不是很蛋疼,所以需要用到GroupBox来解决这个问题.如下图

    GroupsBox

    (2). 耦合radio控件
    还是以问卷为例,有的时候我们需要根据用户的选择进行相应题目的默认选择,比如他的学校选择了“北京大学”,那么属性那一栏应该选择“学霸”,而不是“学渣”

        python    8行
        python    8行
    1. @pyqtSignature("") 
    2. def on_rb1_clicked(self): 
    3. self.rb3.setChecked(True
    4.  
    5. @pyqtSignature("") 
    6. def on_rb2_clicked(self): 
    7. self.rb4.setChecked(True

    rb1-北京大学 rb2-家里蹲大学 rb3-学霸 rb4-学渣
    setChecked(True) 表示选择该项
    isChecked() 可以用于判断某选项是否被选择。若已被选择,就返回True

    • 6.dial控件和slider控件

    dial控件

    slider控件


    二者的主要作用是会发射"int"型的数值,默认是0-99,也可在Qt designer中自己设定,所以一般这两者用到的槽函数是valueChanged(self,value),注意,不同于上面几种控件,这两种是要传参的,所以装饰器需要稍微修改一下,详见下面带代码

        python    6行
        python    6行
    1. # 装饰器需要声明传入int型的变量 
    2. @pyqtSignature("int") 
    3. def on_dial_valueChanged(self,value): 
    4. self.label_9.setStyleSheet("font-size:%dpx;" % value) 
    5. self.label_10.setText(str(value)) 

    这段代码的作用是,随着用户旋转dial控件,字体大小相应变化,右边的label显示当前字体的大小(即value)

    dial示例

    • 7.对话框
    • (1) 提示对话框
      QMessageBox.information(self,'标题','提示信息','OK','Cancel','其他')

    解释:上面参数中的'OK','Cancel','其他'表示对话框的可选项,一般默认是OK.
    另外从左至右依次返回0,1,2.
    参考代码

        python    5行
        python    5行
    1. @pyqtSignature("") 
    2. def on_information_clicked(self): 
    3. info = QMessageBox.information(self, 'information', u'提示对话框', 'OK', 'Cancel', u'其他'
    4. print(info) 

    information

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

    question

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

    warning

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

    critical

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

    about

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

    aboutQt

  • 相关阅读:
    JDBC学习笔记一
    MySql学习笔记四
    MySql学习笔记三
    MySql学习笔记二
    将select 转为json
    这个网站病毒挺有意思,下载我网站的图片,我说怎么爬虫爬我几十个G的图片
    学习新知识的“填--捋--磨”策略
    谈下程序设计算法的准备心得与体会-nCov隔离也许帮你提升能力
    关于青少年,编程,教育的一些感悟(写在农历鼠年前)
    数据库敏捷版本控制之3个数据库策略
  • 原文地址:https://www.cnblogs.com/marsggbo/p/6622893.html
Copyright © 2011-2022 走看看