首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据列表中的项数创建框架

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

Stack Overflow用户
提问于 2018-09-01 13:30:23
回答 1查看 267关注 0票数 0

所以我有一个清单:

代码语言:javascript
复制
titles = ["Crazy", "Delusional", "Perfection", "IDK"]

使用tkinter,我希望根据列表titles中的项目数在不同的行和列中创建框架,每个框架中的文本(文本将来自列表,每个框架将从列表中的元素中获取一个文本,例如框架1将在其中包含文本“疯狂”,框架2将在其中包含文本“妄想”)。

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

代码语言:javascript
复制
titles = ["Crazy", "Delusional", "Perfection", "IDK", "Who Knows"]

总共应该有五个框架。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-01 13:35:46

您可以在循环中轻松地做到这一点:

例如:(它在列表中保留对帧的引用,但不引用标签)

代码语言:javascript
复制
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()

或者使用类:(这个类不保留对框架或标签的引用,但是可以。)

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52128586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档