2016-08-25 1 views
1

は、今私が持っている:tk.Framesを作成して設定する反復的な方法はありますか?

# 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」と入力することなく、すべてのフレームを作成し、ウィンドウに配置して構成する反復的な方法があるのだろうかと疑問に思っていた。

答えて

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の下に辞書に格納して、それらを同時に設定してください。

+0

しかし、それを追加する前にそれぞれの "フレーム"オブジェクトを宣言する必要はありませんか?私はちょうど整数、例えば30を入力し、それが自動的にリストをself.f1、self.f2、self.f3に設定する方法がありますか? – RBuntu

+0

これはあなたが探しているものですか? – grael

+0

ほぼ!大会f1、f2、f3などでどのように名前を付けますか?これらの名前をキーとして辞書に保存しますか? (つまり、個別にアクセスするにはどうすればよいですか?「self.frames [1]」、「self.frames [2]」、「self.frames [3]」などを使用する必要がありますか? – RBuntu

関連する問題