python GUI庫圖形介面開發之PyQt5複選框控制元件QCheckBox詳細使用方法與例項
阿新 • • 發佈:2020-02-29
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_())
效果圖如下
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控制元件知識請檢視下面的相關連結