PyQt的QCheckBox复选框实现单选功能

问题描述:PyQt的QCheckBox复选框实现单选功能

重点在于槽函数

  def  changeCheck1(self):
        if self.checkBox1.checkState() == Qt.Checked:
            self.checkBox2.setChecked(False)
            self.checkBox3.setChecked(False)
            self.checkBox4.setChecked(False)

完整代码例子

import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.resize(500, 500)
        self.checkBox1 = QCheckBox(self)
        self.checkBox2 = QCheckBox(self)
        self.checkBox3 = QCheckBox(self)
        self.checkBox4 = QCheckBox(self)
        vbox=QHBoxLayout(self)
        vbox.addWidget(self.checkBox1)
        vbox.addWidget(self.checkBox2)
        vbox.addWidget(self.checkBox3)
        vbox.addWidget(self.checkBox4)

        self.setLayout(vbox)

        self.checkBox1.stateChanged.connect(self.changeCheck1)
        self.checkBox2.stateChanged.connect(self.changeCheck2)
        self.checkBox3.stateChanged.connect(self.changeCheck3)
        self.checkBox4.stateChanged.connect(self.changeCheck4)


    def  changeCheck1(self):
        if self.checkBox1.checkState() == Qt.Checked:
            self.checkBox2.setChecked(False)
            self.checkBox3.setChecked(False)
            self.checkBox4.setChecked(False)
    def  changeCheck2(self):
        if self.checkBox2.checkState() == Qt.Checked:
            self.checkBox1.setChecked(False)
            self.checkBox3.setChecked(False)
            self.checkBox4.setChecked(False)
    def  changeCheck3(self):
        if self.checkBox3.checkState() == Qt.Checked:
            self.checkBox1.setChecked(False)
            self.checkBox2.setChecked(False)
            self.checkBox4.setChecked(False)
    def  changeCheck4(self):
        if self.checkBox4.checkState() == Qt.Checked:
            self.checkBox1.setChecked(False)
            self.checkBox2.setChecked(False)
            self.checkBox3.setChecked(False)

if __name__ == '__main__':
    app=QApplication(sys.argv)
    main=MainWindow()
    main.show()
    sys.exit(app.exec())
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在QTableView中添加单选框和复选框,您需要使用QItemDelegate类和setIndexWidget函数。以下是一个简单的示例: ```python from PyQt5.QtWidgets import QTableView, QItemDelegate, QRadioButton, QCheckBox class RadioButtonDelegate(QItemDelegate): def createEditor(self, parent, option, index): editor = QRadioButton(parent) editor.setChecked(index.data() == True) return editor def setEditorData(self, editor, index): editor.setChecked(index.data() == True) def setModelData(self, editor, model, index): model.setData(index, editor.isChecked(), role=QtCore.Qt.EditRole) class CheckBoxDelegate(QItemDelegate): def createEditor(self, parent, option, index): editor = QCheckBox(parent) editor.setChecked(index.data() == True) return editor def setEditorData(self, editor, index): editor.setChecked(index.data() == True) def setModelData(self, editor, model, index): model.setData(index, editor.isChecked(), role=QtCore.Qt.EditRole) ``` 我们创建了两个代理类:一个RadioButtonDelegate用于单选框,一个CheckBoxDelegate用于复选框。createEditor函数用于创建编辑器,setEditorData用于设置编辑器的当前值,setModelData用于将编辑器的值设置回模型中。 然后,您可以将这些代理分配给特定的列: ```python radio_delegate = RadioButtonDelegate() check_delegate = CheckBoxDelegate() table_view.setItemDelegateForColumn(1, radio_delegate) table_view.setItemDelegateForColumn(2, check_delegate) ``` 这将使第2列显示为单选框,第3列显示为复选框

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值