我正在QStackedLayout小部件的各层中动态创建UI元素。我创建了一个生成器,用于存储目标堆栈式小部件层的对象,以便可以在需要时收集使用该层中包含的UI元素进行的设置。我确定已经隔离了一个单选按钮,但是我不知道如何访问'isChecked()'属性。如果我将此项目隔离并使用此行存储为变量(“ items”是Generator):
target_radio_button = items.__next__()
我知道这个QWidgetItem是QRadioButton,我如何进入'isChecked'属性来查询是否被检查?如果我使用以下方法打印隔离对象的类型:
print (type(target_radio_button))
这是返回的内容:
<class 'PySide2.QtWidgets.QWidgetItem'>
这是要求的最少代码:
from PySide2 import QtWidgets
import sys
class Test(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Test, self).__init__(parent)
self.setWindowTitle("Test")
self.setGeometry(50, 50, 200, 200)
self.test_layout = QtWidgets.QVBoxLayout()
self.setLayout(self.test_layout)
self.main_stacked_layout = QtWidgets.QStackedLayout()
self.test_layout.addLayout(self.main_stacked_layout)
self.widget = QtWidgets.QWidget()
self.widget_layout = QtWidgets.QVBoxLayout()
self.widget.setLayout(self.widget_layout)
self.radio = QtWidgets.QRadioButton('Sample Radio Button')
self.h_layout = QtWidgets.QHBoxLayout()
self.h_layout.addWidget(self.radio)
self.widget_layout.addLayout(self.h_layout)
self.layout_container = [self.widget]
self.main_stacked_layout.addWidget(self.widget)
self.demo()
def demo(self):
target_widget = self.layout_container[0]
target_layout = target_widget.layout()
for layout_item in target_layout.findChildren(QtWidgets.QHBoxLayout):
items = (layout_item.itemAt(i) for i in range(layout_item.count()))
self.get_settings_value(items, 'Boolean')
# for item in target_layout.findChildren(QtWidgets.QRadioButton):
# print (item.text())
# print (item.isChecked())
def get_settings_value(self, items, value_type):
if value_type == 'Boolean':
target_radio_button = items.__next__()
print (type(target_radio_button))
#print (target_radio_button.isChecked())
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
form = Test()
form.show()
sys.exit(app.exec_())
我评论了两个区域-我禁用的第一个块演示了一种我可以看到的信息,该信息可以获取我想要的信息,但是它的用途不充分。我需要的是捕获目标布局中的子级,而无需过滤特定类型(在示例代码中,这将用于QRadioButton)。我想将找到的那一组孩子发送到简化的“ get_settings_value”函数,然后从那里找出有关要查找的内容的说明。我打算有多个不同的“ value_type”参数来提取取决于UI小部件的值。第二个注释掉的区域是print语句,用于检查元素'isChecked()'。这引发了错误,并且我正在尝试了解如何获得对该属性的访问。
itemAt()
方法返回作为通用容器的itemAt()
,其派生类为QLayoutItem
,QLayoutItem
和QLayout
。因此,如果要获取QLayout
的小部件,则必须使用widget()方法:
QSpacerItem