Мой вопрос очень похож на этот пост, Python PyQt - флажок, чтобы снять все остальные флажки .Тем не менее, я пытаюсь установить все остальные флажки, когда установлен основной флажок, и в то же время, если любой из других флажков выбран независимо, то я бы хотел снять флажок основного.Я попытался изменить предоставленный ответ, но не смог сосредоточиться на сигнале «self.sender».Я не могу изменить выбор при снятии флажка.Вот код, который я изменил, используя решение, предоставленное @ eyllanesc. Любая помощь очень ценится, спасибо!
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
class Test(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.checkBoxAll = QCheckBox("Select All")
self.checkBoxA = QCheckBox("Select A")
self.checkBoxB = QCheckBox("Select B")
self.checkBoxAll.setChecked(False)
self.checkBoxAll.stateChanged.connect(self.onStateChange)
self.checkBoxA.stateChanged.connect(self.onStateChange)
self.checkBoxB.stateChanged.connect(self.onStateChange)
grid = QGridLayout(self)
grid.addWidget(self.checkBoxAll, 1, 0)
grid.addWidget(self.checkBoxA, 2, 0)
grid.addWidget(self.checkBoxB, 3, 0)
self.setWindowTitle('Test')
self.show()
@pyqtSlot(int)
def onStateChange(self, state):
if state == Qt.Checked:
if self.sender() == self.checkBoxAll:
self.checkBoxA.setChecked(True)
self.checkBoxB.setChecked(True)
elif self.sender() in (self.checkBoxA, self.checkBoxB):
self.checkBoxAll.setChecked(False)