是否有迭代方法来创建tk.Frames并配置它们?

时间:2016-08-25 14:07:47

标签: python python-2.7 tkinter

现在我有:

# create window frames
    self.f1 = tk.Frame(self.root)
    self.f2 = tk.Frame(self.root)
    self.f3 = tk.Frame(self.root)
    self.f4 = tk.Frame(self.root)
    self.f5 = tk.Frame(self.root)
    self.f6 = tk.Frame(self.root)

# place frames on window
    for f in (self.f1, self.f2, self.f3, self.f4, self.f5, self.f6):
        f.configure(bg="white")
        f.configure(width=self.width, height=self.height, bg="white")
        f.place(x=0, y=0)

我将添加更多帧。我想知道是否有迭代方法来创建所有帧,以及将它们放在窗口中并配置它们,而不必键入“self.f7,self.f8,self.f9”等。

1 个答案:

答案 0 :(得分:2)

将每个新Frame添加到列表中,然后遍历列表。

frames = []

self.f1 = tk.Frame(self.root)
frames.append(self.f1)
# Do that for all frames

for f in frames:
    f.configure(bg="white")
    f.configure(width=self.width, height=self.height, bg="white")
    f.place(x=0, y=0)

编辑以回答评论:

为此创建一个方法:

def add_frames(self, how_many_frames):
    for i in range(how_many_frames):
        f = tk.Frame(self.root)
        self.frames[i] = f
        f.configure(bg="white")
        f.configure(width=self.width, height=self.height, bg="white")
        f.place(x=0, y=0)

您还需要在self.frames = dict()方法中初始化__init__。现在调用add_frames(30)创建30帧,然后在self.frames下的词典中存储并同时配置它们。