按鈕類控制元件-QCheckBox
阿新 • • 發佈:2020-07-31
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, QVBoxLayoutclass 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_())