python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例

2020-11-05 09:52:46 浏览数 (1)

QCheckBox类中常用方法如表

方法

描述

setChecked()

设置复选框的状态,设置为True表示选中,False表示取消选中的复选框

setText()

设置复选框的显示文本

text()

返回复选框的显示文本

isChecked()

检查复选框是否被选中

setTriState()

设置复选框为一个三态复选框

setCheckState()

三态复选框的状态设置,具体设置可以见下表

三态复选框的三种状态

名称

含义

Qt.Checked

2

组件没有被选中(默认)

Qt.PartiallyChecked

1

组件被半选中

Qt.Unchecked

0

组件被选中

QCheckBox按钮的使用实例

代码语言:javascript复制
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组中

代码语言:javascript复制
 groupBox = QGroupBox("Checkboxes")
 groupBox.setFlat(False)

将三个复选框的stateChanged信号都连接到槽函数stateChanged(),使用landba的方式传递对象给槽函数

当QCheckBox状态改变时发射stateChanged信号,当信号发生改变时触发自定义的槽函数btnstate()

代码语言:javascript复制
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复选框

代码语言:javascript复制
self.checkBox1 = QCheckBox("&Checkbox1")
self.checkBox1.setChecked(True)

使用按钮的isChecked()方法,判断复选框是否被选中,其核心代码是:

代码语言:javascript复制
chk1Status = self.checkBox1.text()   ", isChecked="   str(self.checkBox1.isChecked())   ', chekState='   str(
      self.checkBox1.checkState())   "n"

实例化一个QCheckBox类的对象checkBox3,然后使用setTristate()开启三态模式,然后设置为半选状态并连接槽函数

代码语言:javascript复制
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控件知识请查看下面的相关链接

0 人点赞