pyqt樣式表語法筆記(上) --原創

pyqt樣式表語法筆記(上)

pyqt
QSS
python
樣式表

由於軟件課設的緣由開始學習使用pyqt4,才發現原來它也有樣式表,並且語法跟css基本相同,並且一些功能實現起來感受比js要簡單方便得多。但願以後桌面軟件開發過程當中可能遇到的各類bug不會讓我失去對pyqt的好感。css

下面主要是通過我各類測試、瞎寫以後獲得的一些總結,也就是說一些經常使用的語法或者其餘須要注意的地方。html

  • 要寫樣式表能夠直接在Qt Designer裏編輯,官網給出的資料請參考以下連接
    QSS樣式表規則

經常使用命令行--轉化文件python

        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"

經常使用語法web

  • 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("") 是裝飾器,用於給槽函數傳遞參數。app

函數名on_PushButton1_clicked表示QPushButton的id名是「PushButton1」,只要用戶點擊這個按鍵,就會觸發下面的語句,即修改label(同理其id名爲l1)的樣式表ide

(如下的例子同理,除特殊狀況再也不作具體介紹。)函數

  • 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
相關文章
相關標籤/搜索