我正在创建一个具有许多复选框的应用程序。每 4 个复选框在一个groupBox_n
(n=36) 内,然后这些 groupBoxes 在另一个 groupBox 内。
每个复选框都按照一定的规则命名,这对我来说非常方便。我想访问他们每个人,但我不想每次都输入他们的名字。所以我想在一个列表中重现他们的名字,这样我就可以遍历列表并根据他们的名字进行控制。
但是当我尝试连接一个从列表中调用字符串的按钮时,我无法做到这一点。在这里,我使用 QLineEdit 复制了一个示例。
有可能做这样的事情吗?
打电话findChildren
对我没有帮助,因为那时我不知道我的复选框在我的应用程序中的位置是什么,或者那里的“谁是谁”。通过 ObjectName 调用也是不可能的,是吗?
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.gridLayout = QtGui.QGridLayout(Form)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.My_lineEdit = QtGui.QLineEdit(Form)
self.My_lineEdit.setObjectName(_fromUtf8("My_lineEdit"))
self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.gridLayout.addWidget(self.pushButton, 0, 0, 1, 1)
MyStrinng = 'My_lineEdit'
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.Mystring.clear)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
像这样,PyQt
不将我的字符串识别为对象的名称。我也尝试用 制作一个PyQt
字符串QCore.QString('My_lineEdit')
,但QString
不适用于我的版本(您可以在此处查看)
有了这个,我可以重现我所有复选框的名称。
names = []
for x in range(0, 6):
for y in range(0, 6):
for z in range(1, 5):
Names = 's'+str(x)+str(y)+'0'+str(z)
names.append(Names)
print(names)