根据列表中的项目数创建框架

时间:2018-09-01 13:30:24

标签: python python-3.x list tkinter

所以我有一个列表:

titles = ["Crazy", "Delusional", "Perfection", "IDK"]

使用tkinter我想根据列表titles中的项目数在不同的行和列中创建框架,并在每个框架中添加文本(文本将来自列表,每个框架将从列表中的元素中获取一个文本,例如第1帧中将包含文本“ Crazy”,第2帧中将具有文本“ Delusional” ...)。

在此示例中,应该总共创建四个框架,但是如果元素数量发生变化,那么titles变为:

titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]

总共应该有五帧。

1 个答案:

答案 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()