所以我有一个列表:
titles = ["Crazy", "Delusional", "Perfection", "IDK"]
使用tkinter
我想根据列表titles
中的项目数在不同的行和列中创建框架,并在每个框架中添加文本(文本将来自列表,每个框架将从列表中的元素中获取一个文本,例如第1帧中将包含文本“ Crazy”,第2帧中将具有文本“ Delusional” ...)。
在此示例中,应该总共创建四个框架,但是如果元素数量发生变化,那么titles
变为:
titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]
总共应该有五帧。
答案 0 :(得分:1)
您可以轻松地循环执行此操作:
例如:(在列表中保留对框架的引用,但不引用标签)
import tkinter as tk
titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]
root = tk.Tk()
frames = [tk.Frame(root) for _ in range(len(titles))]
for frame, title in zip(frames, titles):
tk.Label(frame, text=title).pack()
frame.pack()
root.mainloop()
或带有一个类:(该类不保留对框架或标签的引用,但可以。)
import tkinter as tk
class App(tk.Tk):
def __init__(self, titles):
super().__init__()
self.titles = titles[:] # copy the titles
for title in self.titles:
f = tk.Frame(self)
tk.Label(f, text=title).pack()
f.pack()
titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]
App(titles).mainloop()