方法调用问题的字符串插值

时间:2021-07-07 13:17:13

标签: python python-3.x string methods

我不知道如何准确描述这个问题,所以请原谅我的描述不准确。

在我的代码中有四个单独的方法,编号从 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()

我到底要怎么做?

1 个答案:

答案 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()
相关问题