所以我有一个清单:
titles = ["Crazy", "Delusional", "Perfection", "IDK"]使用tkinter,我希望根据列表titles中的项目数在不同的行和列中创建框架,每个框架中的文本(文本将来自列表,每个框架将从列表中的元素中获取一个文本,例如框架1将在其中包含文本“疯狂”,框架2将在其中包含文本“妄想”)。
在这个例子中,总共应该创建四个框架,但是如果元素的数量发生变化,那么titles就变成:
titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]总共应该有五个框架。
发布于 2018-09-01 13:35:46
您可以在循环中轻松地做到这一点:
例如:(它在列表中保留对帧的引用,但不引用标签)
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()https://stackoverflow.com/questions/52128586
复制相似问题