2017-02-26 4 views
0

私の問題は、私のフレームオブジェクトで動作するtkraise()を取得できないということです。フレームを格納するための変数を使用するときは機能しますが、オブジェクトを使用するときは機能しません。 tkraise()をフレームオブジェクトで動作させ、blue_frameを表示させるには? (他のフレーム関数もすべて機能しません)作成したフレームオブジェクトでフレーム関数が機能していません

私の基本フレーム(ボックス)には、他のすべてのフレームが入ります。これらのフレームは、すべてを継承するNew_Frameクラスを使用して作成したオブジェクトですFrameクラスから、つまり、私はNew_Frameクラスオブジェクト上ですべての種類のフレーム操作を実行できるはずですが、tkraise()のように動作していません。

from tkinter import * 

root = Tk() 

root.minsize(width=300, height=230) 

box = Frame(root) 
box.pack(fill=BOTH, expand=True) 
box.grid_columnconfigure(0, weight=1) 
box.grid_rowconfigure(0, weight=1) 

class New_frame(Frame): 

    def __init__(self,color): 
     Frame.__init__(self) 
     self.color = color 

     fr = Frame(box, bg=self.color) 
     fr.grid(row=0, column=0, sticky="nsew") 

# frame objects 
blue_frame = New_frame("blue") 
red_frame = New_frame("red") 
green_frame = New_frame("green") 

blue_frame.tkraise() 

root.mainloop() 
+0

は、あなたが(それぞれ 'New_frame'が内部フレームを持っている)7つのフレームの合計を作成しようとしていますか? 'tkraise'を呼び出すと、どのフレームを上げるつもりですか? –

答えて

0

フレームを作成する方法は非常に珍しいようです。 2つのフレームを作成していますが、外側のフレームを親として持たない内側のフレームがあります。

私は、New_frameを1つのフレームにしようと考えています。その場合は__init__からFrameへのコールを削除する必要があります。New_frameです。また、New_frameのインスタンスを作成するときは、親を明示的に渡す必要があります。例えば

class New_frame(Frame): 

    def __init__(self,parent, color): 
     Frame.__init__(self, parent, bg=color) 
     self.color = color 
     self.grid(row=0, column=0, sticky="nsew") 

# frame objects 
blue_frame = New_frame(box, "blue") 
red_frame = New_frame(box, "red") 
green_frame = New_frame(box, "green") 
関連する問題