帧功能不适用于我创建的Frame对象

时间:2017-02-26 23:37:57

标签: python-3.x oop tkinter

我的问题是我无法让tkraise()处理我的任何框架对象。当我使用变量存储帧时,它确实有效,但在使用对象时则不行。如何让tkraise()处理我的框架对象并显示blue_frame? (所有其他帧功能也不起作用)

对于你的信息:我有一个基本框架(框),所有其他框架都进入。这些框架是我使用New_Frame类创建的对象,它继承了Frame类中的所有内容 - 这意味着我应该能够在我的New_Frame类对象上执行各种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()

1 个答案:

答案 0 :(得分:0)

您创建框架的方式似乎非常不寻常。您正在创建两个框架,其中内部框架没有外部框架作为父框架。

我的猜测是你打算让New_frame成为一个单一的框架。如果是这种情况,您需要从Frame的{​​{1}}内移除对__init__的调用。此外,您应该在创建New_frame的实例时显式传入父级。

例如:

New_frame
相关问题