首页 > 解决方案 > 用于标签变量的 Python 循环

问题描述

我正在尝试创建一个循环,该循环将为它们的各个标签(Tkinter 模块)显示每个产品标题。

使用当前循环,我可以让它在列表中打印我的 10 个“static_webpage_1_titles”,但我还希望每次将变量 Label_1 增加 +1 增量。

例如,它应该这样做:

Label_1['text'] = static_webpage_1_titles[0]
Label_2['text'] = static_webpage_1_titles[1]
Label_3['text'] = static_webpage_1_titles[2]

这是我当前的代码:

def Generate_Product_Name_and_Price_1():
    if Button_on:
        Find_static_webpage_1()
        for i in range(len(static_webpage_1_titles)):
            Label_1['text'] = static_webpage_1_titles[i]

编辑:

product_labels = [Label_1['text'], Label_2['text'], Label_3['text'],
                  Label_4['text'], Label_5['text'], Label_6['text'],
                  Label_7['text'], Label_8['text'], Label_9['text'],
                  Label_10['text']]

我在上面为每个标签小部件创建了一个列表,并将循环中的最后一行代码更改为:

def Generate_Product_Name_and_Price_1():
    if Button_on:
        Find_static_webpage_1()
        for i in range(len(static_webpage_1_titles)):
            product_labels[i] = static_webpage_1_titles[i] +': $'+ static_webpage_1_price[i]

当我运行它时,我没有收到任何 IDLE 错误,但我的标签小部件没有填充数据。

标签: pythonpython-3.xtkinter

解决方案


您需要列出 Label 实例,而不是 Label 实例的文本属性。像这样:

product_labels = [Label_1, Label_2, Label_3,
                  Label_4, Label_5, Label_6,
                  Label_7, Label_8, Label_9,
                  Label_10]

然后你访问这样的属性:

for i in range(len(static_webpage_1_titles)):
    product_labels[i]['text'] = static_webpage_1_titles[i] +': $'+ static_webpage_1_price[i]

你也可以用 zip() 使它更整洁一些:

for label, title, price in zip(product_labels, static_webpage_1_titles, static_webpage_1_price):
    label['text'] = title +': $'+ price

推荐阅读