我不知道如何准确描述这个问题,所以请原谅我的描述不准确。
在我的代码中有四个单独的方法,编号从 0 到 4。我想对方法调用进行字符串插值。这是我的代码。
for i in range(0,4):
form.lineEditCh_3.insert('10')
print(form.lineEditCh_3.text())
DAC_Communication.set_voltage(channel=4, line_edit=form.lineEditCh_3, plain_text=form.plainTextEditCh_3)
form.buttonCh_3.click()
我希望能够执行以下操作:
for i in range(0,4):
form.lineEditCh_{i}.insert('10')
print(form.lineEditCh_{i}.text())
DAC_Communication.set_voltage(channel={i+1}, line_edit=form.lineEditCh_{i}, plain_text=form.plainTextEditCh_{i})
form.buttonCh_{i}.click()
我到底要怎么做?
答案 0 :(得分:2)
将它们保存在列表中并并行迭代可能会更好,但您可以使用 getattr
:
for i in range(4):
# getting variables of interest with `getattr`
lineEditCh_i = getattr(form, f"lineEditCh_{i}")
plainTextEditCh_i = getattr(form, f"plainTextEditCh_{i}")
buttonCh_i = getattr(form, f"buttonCh_{i}")
# using them
lineEditCh_i.insert("10")
print(lineEditCh_i.text())
DAC_Communication.set_voltage(channel=i+1,
line_edit=lineEditCh_i,
plain_text=plainTextEditCh_i)
buttonCh_i.click()
使用列表的方法是:
lineEditChs = [form.lineEditCh_0, form.lineEditCh_1, ...]
plainTextEditChs = [form.plainTextEditCh_0, form.plainTextEditCh_1, ...]
buttonChs = [form.buttonCh_0, form.buttonCh_1, ...]
那么你会写:
for i, (lineEditCh_i, plainTextEditCh_i, buttonCh_i) in enumerate(
zip(lineEditChs,
plainTextEditChs,
buttonChs)):
lineEditCh_i.insert("10")
print(lineEditCh_i.text())
DAC_Communication.set_voltage(channel=i+1,
line_edit=lineEditCh_i,
plain_text=plainTextEditCh_i)
buttonCh_i.click()