python - PyQt5 QGroupBox 与 QCheckBox - 关闭自动禁用
问题描述
我想使用一个可以选中的 QGroupBox,但是当 QGroupBox 复选框未选中时,我不会禁用 QGroupBox 的内容小部件。
checked : bool 此属性保存是否选中了组框
如果组框是可选中的,它会显示一个复选框。如果选中该复选框,则启用组框的子项;否则,孩子将被禁用并且用户无法访问。
默认情况下,选中的组框也被选中。
我想在 QGroupBox 标题栏中有一个复选框,但我不希望应用上述功能。
复选框逻辑将是全选、全选,因此当未选中复选框时,用户可以修改内部 QGroupBox 复选框元素。
我想保留一个界面-ui,如下所示:
也许我必须使用带有 QPaintEvent 或 QSS 样式表的 QFrame,但我不是这方面的专家。
编辑:如果可能的话,我还想要QGroupBox复选框的 triState。
编辑2:我试试这个代码:
self.main_self.ui_visible_player_list_fields_window.groupBox.changeEvent(QtCore.QEvent.EnabledChange).connect(lambda event:event.ignore())
但它有错误。
self.main_self.ui_visible_player_list_fields_window.groupBox.changeEvent(QtCore.QEvent.EnabledChange).connect(lambda event:event.ignore())
TypeError: changeEvent(self, QEvent): argument 1 has unexpected type 'Type'
编辑:我认为以下代码将解决问题:
class Custom_QGroupBox(QtWidgets.QGroupBox):
def __init__(self, parent=None):
super(Custom_QGroupBox, self).__init__(parent)
def changeEvent(self, event):
if event.type() == QtCore.QEvent.EnabledChange:
self.blockSignals(True)
self.setEnabled(True)
event.ignore()
self.blockSignals(False)
else:
return super(Custom_QGroupBox, self).changeEvent(event)
但它没有:(
解决方案
我添加此代码:
self.main_self.ui_visible_player_list_fields_window.groupBox.blockSignals(True)
self.main_self.ui_visible_player_list_fields_window.groupBox.setEnabled(True)
for child_widget in self.main_self.ui_visible_player_list_fields_window.groupBox.children():
try:
child_widget.setEnabled(True)
except:
pass
self.main_self.ui_visible_player_list_fields_window.groupBox.blockSignals(False)
在切换方法和是child_widget_checkbox.stateChanged.connect
方法中,它可以工作。
唯一要完全回答这个问题的是 QGroupBox 的三态。
推荐阅读
- java - 尝试双语会话,假设 Postel 定律在远程端成立并使用 ChromeDriver 和 Selenium 回退到原始 OSS JSON
- javascript - pouchdb 没有在 Linux 上使用电子和 leveldb 创建本地数据库
- javascript - 如何使用下划线javascript过滤数组数组
- javascript - 如何将这些列表元素与一些按钮对齐?
- python-3.x - 如何使用 xarray 对 netcdf 数据进行分箱
- c# - 我的 int 'LastTwoChars' 导致“StartIndex 不能小于零”。例外。我了解异常,但无法解决
- android - 通过 firebase 云消息将数据从 api 发送到我的应用程序
- r - For 或 Repeat 循环根据字符串值而不是数字序列进行过滤
- python - 插入或替换添加一个全新的行 SQLite
- android - 如何在 Flutter 中将用户输入数据从一个页面传递到另一个页面?