python - 大量按钮和智能检查被检查

标签 python pyqt pyside

我有对话框:

Dialog

它包含许多扁平的 QPushButtons、QTextEdit 和另一个 QPushButton。单击“获取列表”后,我们可以在 QTextEdit 中看到选中的按钮列表。

我的问题是如何以某种智能方式获得此功能。现在我正在检查每个按钮:

    if self.ui.bq6o.isChecked():
        cards.append("Q6o")
    if self.ui.bk2o.isChecked():
        cards.append("K2o")
    if self.ui.bq3o.isChecked():
        cards.append("Q3o")
    if self.ui.bt7s.isChecked():
        cards.append("T7s")
    if self.ui.bq4o.isChecked():
        cards.append("Q4o")
    if self.ui.bt4s.isChecked():
        cards.append("T4s")
    if self.ui.b98o.isChecked():
        cards.append("98o")
    if self.ui.bjto.isChecked():
        cards.append("JTo")
    if self.ui.btt.isChecked():
        cards.append("TT")
    if self.ui.bq7o.isChecked():
        cards.append("Q7o")

    [...]

显然我不喜欢这样的代码。我一直在寻找一些像“按钮矩阵”这样的小部件,但没有运气。我将不胜感激您的建议。

最佳答案

所有按钮都应该是同一个小部件的子级,可能是对话框本身。只需获取该小部件的句柄即可获取所有子按钮,然后循环遍历它们,如果选中它们,则包含它们的文本。

parent = dialog  # or whatever
cards = [widget.text() for widget in parent.children() if isinstance(widget, QPushButton) and widget.isChecked()]

您可能需要在 if 语句中包含一些代码,以排除“获取列表”按钮,或对话框中可以设置为“选中”但不应包含在卡片列表中的任何其他按钮。

关于python - 大量按钮和智能检查被检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9792530/

相关文章:

python-3.x - 使光标接近时显示工具栏

python - 对字典中的数字进行四舍五入

python - 合并两个 Google App Engine 数据存储结果?

python - 如何确认一个文件对象是空的? [Python]

python - QThread:在Python中线程仍在运行时被销毁

python - 如何从 QListWidget 中删除项目

python - 如何在 QMessageBox 小部件中居中文本和按钮

python - QThread异常管理和线程竞争

python - 从 pyqtgraph.Qt 导入 QtGui 作为 *

python - 名称错误 : global name 'reduce' is not defined