- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题与这篇文章非常相似,Python PyQt - Checkbox to uncheck all other checkboxes .但是,我试图在选中主复选框时选中所有其他框,同时,如果独立选中任何其他框,那么我想取消选中主复选框。我尝试修改提供的答案,但无法理解“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)
最佳答案
根据你所拥有的逻辑,你正在创建一个循环,因为任何元素的状态改变都会改变另一个元素的状态,这个想法是在插槽中实现状态改变时阻止信号的发射blockSignals() :
from PyQt5 import QtCore, QtGui, QtWidgets
class Test(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.checkBoxAll = QtWidgets.QCheckBox("Select All")
self.checkBoxAll.setChecked(False)
self.checkBoxAll.stateChanged.connect(self.onStateChangePrincipal)
self.checkBoxA = QtWidgets.QCheckBox("Select A")
self.checkBoxB = QtWidgets.QCheckBox("Select B")
self.checkboxes = [self.checkBoxA, self.checkBoxB]
for checkbox in self.checkboxes:
checkbox.stateChanged.connect(self.onStateChange)
grid = QtWidgets.QGridLayout(self)
grid.addWidget(self.checkBoxAll, 1, 0)
grid.addWidget(self.checkBoxA, 2, 0)
grid.addWidget(self.checkBoxB, 3, 0)
self.setWindowTitle('Test')
@QtCore.pyqtSlot(int)
def onStateChangePrincipal(self, state):
if state == QtCore.Qt.Checked:
for checkbox in self.checkboxes:
checkbox.blockSignals(True)
checkbox.setCheckState(state)
checkbox.blockSignals(False)
@QtCore.pyqtSlot(int)
def onStateChange(self, state):
self.checkBoxAll.blockSignals(True)
self.checkBoxAll.setChecked(QtCore.Qt.Unchecked)
self.checkBoxAll.blockSignals(False)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Test()
w.show()
sys.exit(app.exec_())
关于python - QCheckbox 检查所有其他 QCheckBoxes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54014436/
我的问题与这篇文章非常相似,Python PyQt - Checkbox to uncheck all other checkboxes .但是,我试图在选中主复选框时选中所有其他框,同时,如果独立选
我使用 PyQt5 在 Designer 中创建了 3 个复选框。我想要这样的逻辑流程: 如果选中了 2 个复选框中的任何一个,请禁用最后一个复选框。取消选中某个复选框后,应重新启用禁用的复选框,依此
我是 Qt 和 GUI 编程的新手,不确定在参数列表不匹配时将信号连接到插槽的最佳方式。我有一个用 Qt Designer 制作的设置对话框,它包含一系列 QCheckBoxes 和 QLineEdi
QCheckBox::toggled(bool) 和 QCheckBox::clicked(bool) 信号之间有什么实际区别吗?两者都有相同的签名,我连接哪个有关系吗? 最佳答案 toggled 信
我会错过某些东西吗,还是真的没有(就绪/内置)方式以编程方式更改QCheckBox的状态而不发出“void stateChanged(int state)”信号? 无论是否调用了“void setCh
有没有一种方法可以像使用 QLabel 一样在 QCheckBox 中换行文本? label = QLabel( QString.fromUtf8('long text in here')) labe
有什么方法可以检测用户是否单击了QCheckBox上的标签?如果是这样,我想执行某些操作,并且检查状态不应更改为已检查或未检查。 到目前为止我找不到任何信号/方法.. 最佳答案 事件过滤器就是答案。
我有一个非常具体的问题,所以我会尽量说清楚。 我有一个包含QTableWidget的QTabWidget,我的QTableWidget的每一行都是通过读取文件动态创建的。 如您所见,当我创建一行时,我
QCheckbox 是否可以有比 Qt::Checked 和 Qt::Unchecked 更多的状态?我有一个 QTreeWidget,如果一个项目被选中,我希望父级显示一个已填充的复选框(某些状态如
我想让一个名为“Show Captions”的 QCheckBox 在选中第一个复选框时禁用另一个名为“Show captions if no title”的 QCheckBox,但我的问题是如何在用
我想知道是否有办法在 pyqt“WITHOUT”触发事件的复选框(QCheckBox)上禁用(setCheckState)?因此,这只是显示更改,复选框现在未选中,但没有触发我连接到的方法。感谢您的帮
我有一个 QCheckBox (deselect_checkbox),在选中时,将另一个 QCheckBox (first_checkbox) 及其自身设置为 False。然而,它只是每隔一段时间才有
我在网格布局中有一个 QCheckbox 定义如下: self.isSubfactorCheckbox = QtGui.QCheckBox('Is &subfactor', self) 默认情况下,复
如何增加 QCheckBox 控件的复选框大小而不是文本大小? 谢谢。 最佳答案 Jérôme 给了你很好的建议。我仅举进一步的例子。 QCheckBox::indicator { widt
我正在尝试仅更改 QCheckBox 的颜色指示矩形。 目前我成功绘制了矩形的右边和底线。 可能我在这里做错了什么。 这是我的代码: CheckBoxWidget.cpp CheckBoxWidget
我正在 PyQt5 中工作,希望能够在按键上选中/取消选中 QCheckBox,就像使用 QPushButton 一样。我检查了文档和 Google,但找不到实现此目的的方法。 最佳答案 您必须覆盖
我试图通过 QCheckBox 单击信号传递两个单独的变量:其按下后的状态及其在列表中的索引。 例如,这是我的代码: # pip install pyqt5 from PyQt5.QtMultimed
QCheckBox 小部件的左侧是复选框,右侧是描述(如下所示): 有谁知道有什么方法可以让描述在左边,盒子在右边? 最佳答案 您可以使用QWidget::setLayoutDirection(Qt:
我正在尝试在我的 UI 中插入一个复选框,该复选框可以根据其选中状态将来自另一个类的 bool 变量设置为 true 或 false。问题是没有发出信号。 该变量在我的第一个类 (renderarea
选中复选框时,以下代码不起作用。无论复选框是否被选中,它都会跳转到“else”语句。 void MainWindow::runButtonClicked() {
我是一名优秀的程序员,十分优秀!