Создать кадры на основе количества элементов в списке - PullRequest
0 голосов
/ 01 сентября 2018

Итак, у меня есть список:

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

Использование tkinter Я хочу создать фреймы в разных строках и столбцах на основе количества элементов в списке titles, с текстом в каждом фрейме (текст будет из списка, каждый фрейм получит один текст из элементы в списке, поэтому, например, в кадре 1 будет текст «Сумасшедший», в кадре 2 будет текст «Бредовый» ...).

В этом примере должно быть создано всего четыре кадра, но если количество элементов изменяется, то titles становится:

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

Всего должно быть пять кадров.

1 Ответ

0 голосов
/ 01 сентября 2018

Вы можете легко сделать это в цикле:

что-то вроде этого, например: (это сохраняет ссылку на фреймы в списке, но не на метки)

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...