我有一个程序,可以根据用户的输入创建许多qlineedits和按钮:
在上面的图像中,4行已经添加了一个按钮后,灰色的“下一步”按钮被点击。现在我想让用户在点击相应按钮时输入到函数中(单击“CreateShot1!-->;转到以“exShot1”作为参数传递的函数)。在
问题是我不知道如何在循环中创建每个qline和button的名称。我想我可以在循环中创建唯一的变量,但这感觉不对。我尝试过使用setObjectName
,但我不知道如何使用它来调用文本。我在Lamdba上也做了一次不成功的尝试(我觉得这可能是一个正确的方法),我相信这是一个必须获取名称和跟踪用户输入更改的组合。在
我用textChanged
做了实验,我让它在循环的最后一个条目上工作,但对其他的qline和按钮不起作用)
相关代码:
while i <= int(seqNum):
#create each widget
self.createShotBtn = QtGui.QPushButton("Create Shot %s!" %str(self.shotNumberLst[i-1]))
self.labelName = QtGui.QLabel(self)
self.labelName.setText("Enter Name Of Shot %s!" %str(self.shotNumberLst[i-1]))
self.shotName = QtGui.QLineEdit(self)
self.shotName.setObjectName("shot"+str(i))
#add widget to layout
self.grid.addWidget(self.labelName, 11+shotjump,0)
self.grid.addWidget(self.shotName,11+shotjump,1)
self.grid.addWidget(self.createShotBtn, 11+shotjump,2)
#Press button that makes magic happen
self.createShotBtn.clicked.connect(???)
i += 1
编辑:如果用户在所有行中输入输入,只需按一个按钮,就可以将所有输入作为列表或dict传递(每个“shot”将添加更多行)
试试这个
当你按下同一行的按钮时,这将打印文本。在
问题是每次遍历}的值都会被重写。在
self.createShotBtn
、self.labelName
和{因此,在最后一次运行时,它们是固定的,但只适用于最后一次迭代。在
相反,您希望在循环中使用一个局部范围的变量,并可能将其存储在一个数组中以供以后使用。在
这段代码应该接近您需要的,但是我可以看到
self.shotNumberLst
(它返回一个数字?)和shotjump
(这是offest,或等于i
)被声明。在相关问题 更多 >
编程相关推荐