【问题标题】:String Interpolation of a Method Call Question方法调用问题的字符串插值
【发布时间】:2023-03-29 05:11:01
【问题描述】:

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

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

我该怎么做呢?

【问题讨论】:

  • 只需将lineEdit_ch 设为列表即可。

标签: python python-3.x string methods


【解决方案1】:

将它们保存在列表中并并行迭代可能会更好,但您可以使用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()

【讨论】:

    猜你喜欢
    • 2017-06-27
    • 2018-11-07
    • 2018-09-17
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多