我创建了几行。每行包含复选框和组合框。我希望复选框启用\禁用组合框。但如果我这样绑定槽,它总是启用\禁用列表中的最后一个组合框。如何使每个复选框与下一个组合框一起工作?我是新来的。下面是简化的代码:
for i, feature_name in zip(xrange(data_set.n_features), data_set.feature_names):
rowLayout = QtGui.QHBoxLayout()
featureLabel = QtGui.QLabel()
active_checkbox = QtGui.QCheckBox()
input = QtGui.QSpinBox()
self.feature_inputs.append(input)
def abc(state):
self.feature_inputs[i].setEnabled(state == Qt.Checked)
active_checkbox.stateChanged.connect(abc)
rowLayout.addWidget(active_checkbox)
rowLayout.addWidget(input)
rowLayout.addWidget(featureLabel)
self.ui.features_layout.addLayout(rowLayout)
这是Python中scope的问题,而不是PySide的问题。变量i是在abc函数之外的范围内定义的。同一个变量用于每个abc函数。该变量最终在循环中具有最后一次的值,这就是为什么复选框总是切换最后一个spinbox。为了确保为每个abc函数创建一个单独的索引变量,您需要如下操作:
你在找这样的东西吗?你知道吗
相关问题 更多 >
编程相关推荐