我的问题是我无法让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()
答案 0 :(得分:0)
您创建框架的方式似乎非常不寻常。您正在创建两个框架,其中内部框架没有外部框架作为父框架。
我的猜测是你打算让New_frame
成为一个单一的框架。如果是这种情况,您需要从Frame
的{{1}}内移除对__init__
的调用。此外,您应该在创建New_frame
的实例时显式传入父级。
例如:
New_frame