2017-02-26 125 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

你是打算建立一共有7幀(每'New_frame'內部具有幀)的?當你打電話給'tkraise'時,你打算提升哪一幀? –

回答

0

您創建框架的方式看起來非常不尋常。您正在創建兩個框架,內部框架沒有將外部框架作爲父框架。

我的猜測是你打算讓New_frame成爲一個單一的框架。如果是這種情況,您需要從的New_frame中刪除對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")