我有对话框:
它包含许多扁平的 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/