从窗口小部件QLineEdit的相加的值与一个for循环中产生

问题描述 投票:1回答:1

我想补充的使用for循环产生QLineEdit的方框的值在一起。但是它只是把最后输入,其余的输入被跳过。

for i in range(self.numInputsToAdd):
    self.additionalInputs["addnlInput" + str(i + 1)] = QLineEdit(self)
    self.additionalInputs["addnlInput" + str(i + 1)].setAlignment(Qt.AlignRight)
    self.additionalInputs["addnlInput" + str(i + 1)].setText("1")
    self.additionalInputs["addnlInput" + str(i + 1)].setPlaceholderText("Additional Mod Input #" + str(i + 1))
    self.vertCol.addWidget(self.additionalInputs["addnlInput" + str(i + 1)])

这是我当前如何生成要添加的投入,self.numInputsToAdd是另一个QLineEdit的从一个弹出窗口中的值点击按钮后。上面的代码把输入在一个名为self.additionalInputsaddnlInput1, addnlInput2..etc名字典

一个“掷骰子”按钮被点击后它触发其抓住additionalInputs字典中的项目,并试图将它们加在一起,将它们分配给另一个变量和变量添加到另一个是randint(1, n)的输出的功能

self.dieResult = str(randint(1, n))
self.newinputlist = {}
for keys, vals in self.additionalInputs.items():
    self.newinputlist[keys] = self.additionalInputs[keys].text()
    print(self.newinputlist[keys])
    self.modDieResult = str(int(self.dieResult) + int(self.inputs['modInput'].text()) + int(self.newinputlist[keys]))

以上是相关代码到“模切辊”

Here is a functional working example.目前需要在顶部修改输入框中输入。问题在于与该所产生的输入框“更多修饰符?按钮。这就是它只是增加底部修改输入到最顶端修改输入框是在有应用程序启动。

我使用的Python 3.7.2和Windows 10。

python-3.x pyqt5 pyside2
1个回答
1
投票

我认为这个问题是不是Qt的具体,但在循环的最后一行:

self.modDieResult = str(int(self.dieResult) + int(self.inputs['modInput'].text()) + int(self.newinputlist[keys]))

在这里,您计算在每次循环的结果self.modDieResult。该计算的结果被分配给self.modDieResult这意味着它将最终,仅在结束时的最终calulcated值。

要做到运行总和,你需要一个额外的变量如

self.dieResult = str(randint(1, n))
self.newinputlist = {}

# Store the initial modInput value.
modInputResults = int(self.inputs['modInput'].text())

for k, v in self.additionalInputs.items():
    self.newinputlist[k] = self.additionalInputs[k].text()
    print(self.newinputlist[k])

    # On each loop, add the value for the additional elements.
    # Note you could do: int(v.text()) without the additional newinputlist.
    modInputResults = modInputResults + int(self.newinputlist[k])

self.modDieResult = self.dieResult + modInputResults

注:我也改变了keysvalueskv自变量只包含一个键或值,而不是多个。

© www.soinside.com 2019 - 2024. All rights reserved.