Python 如何知道哪些帧位于顶部(又名tkraise之后)?
我正在用Tkinter制作一个GUI,需要知道哪个框架在上面,这样一个较低的框架就不会进入它的某个循环并更改一些设置 我已经试过了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" 也
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