【问题标题】:Create frames based on number of items in a list根据列表中的项目数创建框架
【发布时间】:2018-09-01 13:30:23
【问题描述】:

所以我有一个清单:

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

使用tkinter 我想根据列表titles 中的项目数在不同的行和列中创建框架,每个框架中的文本(文本将来自列表,每个框架将从列表中的元素,因此例如第 1 帧将在其中包含文本“Crazy”,第 2 帧将在其中包含文本“妄想”...)。

在这个例子中,应该一共创建了四个框架,但是如果元素的数量发生变化,那么titles就变成了:

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

总共应该有五帧。

【问题讨论】:

  • 您是要我们为您编写代码吗?您需要帮助解决问题的哪一部分?

标签: python python-3.x list tkinter


【解决方案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()

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2020-09-11
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多