python - 用于标签变量的 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 错误,但我的标签小部件没有填充数据。
解决方案
您需要列出 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
推荐阅读
- python - 熊猫映射列表的字典?
- node.js - 在项目中多次实例化 Sequelize 连接:这是一个坏主意吗?
- uwp - UWP - 可以在页面内移动的弹出菜单
- flutter - Flutter中如何修改默认顶部导航栏样式
- python - Dtype 函数在 pandas 数据框中无法正常工作
- routes - 在负载均衡器中向 HTTP 请求添加自定义标头
- windows - 在不影响可点击区域的情况下突出显示 Windows 或 MacOs 屏幕
- python - 如何从python中的输入添加字典中键的值
- java - androidx.drawerlayout.widget.DrawerLayout 无法转换为 com.google.android.material.navigation.NavigationView
- xamarin - Xamarin 转换 rawValue