gpt4 book ai didi

python - 在列表中递增列表(封装列表)

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:32 27 4
gpt4 key购买 nike

我的 for 循环工作时遇到了一些问题,它应该在一个窗口中创建多个标签。这是代码片段:

import tkinter as tk
root = tk.Tk()
#Frame 1: components
frame1 = tk.Frame(root).grid(row=0)
items = ['REED', 'PIR', 'VIBR', 'REED', 'PIR']
for r in items:
tk.Label(frame1, text=items[r]).grid(row=r,column=0)
#Frame 2: statusList
frame2 = tk.Frame(root).grid(row=1)
status = [[True, False, True, False],
['14:00:00', '13:24:31', '15:58:32', '08:33:01']]
for r in status:
for s in status[r]:
tk.Label(frame2, text=status[r][s]).grid(row=s,column=r)
root.mainloop()

它输出错误

TypeError: list indices must be integers or slices, not str

这表明我对 for 循环的使用是错误的。我查了一些信息,发现我当然可以遍历一个列表并让它遍历每个项目,例如打印那个项目,但到目前为止我还不知道如何在有封装列表时实现这个想法我想遍历。

最佳答案

这里:

for r in items:
tk.Label(frame1, text=items[r]).grid(row=r,column=0)

python 的 for 循环不是这样工作的。在 for 循环体中,r 不是 items 中项目的索引,它是 项目,所以你需要:

for item in items:
tk.Label(frame1, text=item).grid(row=???,column=0)

但您似乎还希望将项目的索引作为 .grid()row 参数传递。为此,您可以使用 enumerate(seq)seq 的每个元素生成一个 (index, item) 元组:

for index, item in enumerate(items):
tk.Label(frame1, text=item).grid(row=index,column=0)

请注意,您在这里也有类似的问题:

status = [[True, False, True, False],
['14:00:00', '13:24:31', '15:58:32', '08:33:01']]
for r in status:
for s in status[r]:
tk.Label(frame2, text=status[r][s]).grid(row=s,column=r)

关于python - 在列表中递增列表(封装列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205055/

27 4 0
文章推荐: html - 无法将背景图片添加到我的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com