1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5複選框控制元件QCheckBox詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5複選框控制元件QCheckBox詳細使用方法與例項

QCheckBox類中常用方法如表

方法 描述
setChecked() 設定複選框的狀態,設定為True表示選中,False表示取消選中的複選框
setText() 設定複選框的顯示文字
text() 返回複選框的顯示文字
isChecked() 檢查複選框是否被選中
setTriState() 設定複選框為一個三態複選框
setCheckState() 三態複選框的狀態設定,具體設定可以見下表

三態複選框的三種狀態

名稱 含義
Qt.Checked 2 元件沒有被選中(預設)
Qt.PartiallyChecked 1 元件被半選中
Qt.Unchecked 0 元件被選中

QCheckBox按鈕的使用例項

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt


class CheckBoxDemo(QWidget):

  def __init__(self,parent=None):
    super(CheckBoxDemo,self).__init__(parent)

    #建立一個GroupBox組
    groupBox = QGroupBox("Checkboxes")
    groupBox.setFlat(False)

    #建立複選框1,並預設選中,當狀態改變時訊號觸發事件
    self.checkBox1 = QCheckBox("&Checkbox1")
    self.checkBox1.setChecked(True)
    self.checkBox1.stateChanged.connect(lambda: self.btnstate(self.checkBox1))

    #建立複選框,標記狀態改變時訊號觸發事件
    self.checkBox2 = QCheckBox("Checkbox2")
    self.checkBox2.toggled.connect(lambda: self.btnstate(self.checkBox2))

    #建立複選框3,設定為3狀態,設定預設選中狀態為半選狀態,當狀態改變時訊號觸發事件
    self.checkBox3 = QCheckBox("tristateBox")
    self.checkBox3.setTristate(True)
    self.checkBox3.setCheckState(Qt.PartiallyChecked)
    self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

    #水平佈局
    layout = QHBoxLayout()
    #控制元件新增到水平佈局中
    layout.addWidget(self.checkBox1)
    layout.addWidget(self.checkBox2)
    layout.addWidget(self.checkBox3)

    #設定QGroupBox組的佈局方式
    groupBox.setLayout(layout)

    #設定主介面佈局垂直佈局
    mainLayout = QVBoxLayout()
    #QgroupBox的控制元件新增到主介面佈局中
    mainLayout.addWidget(groupBox)

    #設定主介面佈局
    self.setLayout(mainLayout)
    #設定主介面標題
    self.setWindowTitle("checkbox demo")

  #輸出三個複選框當前的狀態,0選中,1半選,2沒選中
  def btnstate(self,btn):
    chk1Status = self.checkBox1.text() + ",isChecked=" + str(self.checkBox1.isChecked()) + ',chekState=' + str(
      self.checkBox1.checkState()) + "\n"
    chk2Status = self.checkBox2.text() + ",isChecked=" + str(self.checkBox2.isChecked()) + ',checkState=' + str(
      self.checkBox2.checkState()) + "\n"
    chk3Status = self.checkBox3.text() + ",isChecked=" + str(self.checkBox3.isChecked()) + ',checkState=' + str(
      self.checkBox3.checkState()) + "\n"
    print(chk1Status + chk2Status + chk3Status)


if __name__ == '__main__':
  app = QApplication(sys.argv)
  checkboxDemo = CheckBoxDemo()
  checkboxDemo.show()
  sys.exit(app.exec_())

效果圖如下

python GUI庫圖形介面開發之PyQt5複選框控制元件QCheckBox詳細使用方法與例項

QCheckBox程式碼分析:

在這個例子中,將三個複選框新增到一個水平佈局管理器中,並新增到一個QGroupBox組中

 groupBox = QGroupBox("Checkboxes")
 groupBox.setFlat(False)

將三個複選框的stateChanged訊號都連線到槽函式stateChanged(),使用landba的方式傳遞物件給槽函式

當QCheckBox狀態改變時發射stateChanged訊號,當訊號發生改變時觸發自定義的槽函式btnstate()

self.checkBox1.stateChanged.connect(lambda: self.btnstate(self.checkBox1))
self.checkBox2.toggled.connect(lambda: self.btnstate(self.checkBox2))
self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

例項化物件CheckBox1和CheckBox2兩個物件,將CheckBox1的狀態設定為選中,為CheckBox1設定為快捷鍵,使用‘&'符號,則可以通過快捷鍵Alt+C選中checkbox1複選框

self.checkBox1 = QCheckBox("&Checkbox1")
self.checkBox1.setChecked(True)

使用按鈕的isChecked()方法,判斷複選框是否被選中,其核心程式碼是:

chk1Status = self.checkBox1.text() + ",chekState=' + str(
      self.checkBox1.checkState()) + "\n"

例項化一個QCheckBox類的物件checkBox3,然後使用setTristate()開啟三態模式,然後設定為半選狀態並連線槽函式

self.checkBox3 = QCheckBox("tristateBox")
self.checkBox3.setTristate(True)
self.checkBox3.setCheckState(Qt.PartiallyChecked)
self.checkBox3.stateChanged.connect(lambda: self.btnstate(self.checkBox3))

本文詳細講解了PyQt5複選框控制元件QCheckBox詳細使用方法與例項,更多關於PyQt5控制元件知識請檢視下面的相關連結