Python 如何知道哪些帧位于顶部(又名tkraise之后)?

Python 如何知道哪些帧位于顶部(又名tkraise之后)?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在用Tkinter制作一个GUI,需要知道哪个框架在上面,这样一个较低的框架就不会进入它的某个循环并更改一些设置 我已经试过了 self.tk.eval('frame stackorder'+str(self.frames[“StartPage”])+'isbove'+str(self.frames[“Wallpaper”]))==1' 自我是我的根(它是一个类),并得到这个错误 _tkinter.TclError: bad window path name "stackorder" 也

我正在用Tkinter制作一个GUI,需要知道哪个框架在上面,这样一个较低的框架就不会进入它的某个循环并更改一些设置

我已经试过了

self.tk.eval('frame stackorder'+str(self.frames[“StartPage”])+'isbove'+str(self.frames[“Wallpaper”]))==1'

自我是我的根(它是一个类),并得到这个错误

_tkinter.TclError: bad window path name "stackorder"

给我这个错误的答案:

_tkinter.TclError: window ".!frame.!startpage" isn't a top-level window
这是我在帧之间创建和更改的方式

self.frames = {}
        for F in (StartPage, PageOne, PageTwo):
            page_name = F.__name__
            frame = F(parent=container, controller=self)
            self.frames[page_name] = frame

            # put all of the pages in the same location;
            # the one on the top of the stacking order
            # will be the one that is visible.
            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame("StartPage")

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()

我从这里开始改变框架(),但不知道如何知道哪个框架在顶部。

您可能应该保留对可见框架的引用,以便访问它:

class App(tk.Tk()):
    def __init__(self, ...):
        ...
        self.visible_frame = "StartPage"
        ...

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()
        self.visible_frame = page_name

谢谢,我不知道我怎么会没有想到这一点。非常欢迎——坦率地说,我认为tkinter应该有一个查询可视帧的方法。
class App(tk.Tk()):
    def __init__(self, ...):
        ...
        self.visible_frame = "StartPage"
        ...

    def show_frame(self, page_name):
        '''Show a frame for the given page name'''
        frame = self.frames[page_name]
        frame.tkraise()
        self.visible_frame = page_name