1. 程式人生 > 實用技巧 >按鈕類控制元件-QCheckBox

按鈕類控制元件-QCheckBox

QCheckBox類繼承自QAbstractButton類。

QCheckBox(複選框)和 QRadioButton(單選鈕)都是選項按鈕,因為他們都可以在開(選中)揮著關(未選中)之間切換。他們的區別是對使用者選擇的限制;單選鈕提供了“多選一”的選擇;而複選框提供的是“多選多”的選擇。

QCheckBox類中的常用方法:

  setChecked()    設定複選框的狀態,設定為True時表示選中複選框,設定為False時表示取消選中複選框

  setText()      設定複選框的顯示文字

  text()        返回複選框的顯示文字

  isChecked()     檢查複選框是否被選中

  setTriState()    設定複選框為一個三態複選框

三態複選框有三種狀態

  Qt.Checked      2    元件沒有被選中(預設值)

  Qt.PartiallyChecked   1    元件被半選中

  Qt.Unchecked     0    元件被選中

案例16 QCheckBox按鈕的使用

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QWidget, QApplication, QCheckBox, QGroupBox, QHBoxLayout, QVBoxLayout


class CheckBoxDemo(QWidget): def __init__(self, parent=None): super().__init__(parent) groupbox = QGroupBox("Checkboxes") groupbox.setFlat(True) layout = QHBoxLayout() self.checkbox1 = QCheckBox("&Checkbox1") # 為checkBox1設定快捷鍵,通過“Alt+C”可以選擇checkbox1複選框 self.checkbox1.setChecked(True) self.checkbox1.stateChanged.connect(
lambda: self.btnstate(self.checkbox1)) layout.addWidget(self.checkbox1) self.checkbox2 = QCheckBox("Checkbox2") self.checkbox2.toggled.connect(lambda: self.btnstate(self.checkbox2)) layout.addWidget(self.checkbox2) self.checkbox3 = QCheckBox("Checkbox3") self.checkbox3.setTristate(True) # 開啟三態模式 self.checkbox3.setCheckState(Qt.PartiallyChecked) self.checkbox3.stateChanged.connect(lambda: self.btnstate(self.checkbox3)) layout.addWidget(self.checkbox3) groupbox.setLayout(layout) mainlayout = QVBoxLayout() mainlayout.addWidget(groupbox) self.setLayout(mainlayout) self.setWindowTitle("CheckBox Demo") def btnstate(self, btn): chk1status = (self.checkbox1.text() + ", is Checked = " + str(self.checkbox1.isChecked()) + ", is checkState = " + str(self.checkbox1.checkState()) + "\n") chk2status = (self.checkbox2.text() + ", is Checked = " + str(self.checkbox2.isChecked()) + ", is checkState = " + str(self.checkbox2.checkState()) + "\n") chk3status = (self.checkbox3.text() + ", is Checked = " + str(self.checkbox3.isChecked()) + ", is 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_())