确定哪个Tkinter小部件位于顶部(或可见)

时间:2014-07-11 17:03:41

标签: tkinter

我想确定哪个小部件(在这种情况下是框架)位于顶部(或者仍然是可见的)。

from Tkinter import *
spam1=0
spam2=1000

def busywork():
    global spam1
    global spam2
    #if frame1 is on top / visible
    spam1=spam1+1
    label1.config(text=str(spam1))

    #if frame2 is on top / visable
    spam2=spam2+1
    label2.config(text=str(spam2))
    root.after(10,busywork)

root=Tk()
frame1=Frame(root)
frame2=Frame(root)

button1=Button(frame1,text="Bring Frame 2 to top",command=frame2.lift)
label1=Label(frame1,text=str(spam1))
button1.pack()
label1.pack()
frame1.place(relx=0,rely=0)


button2=Button(frame2,text="Bring Frame 1 to top",command=frame1.lift)
label2=Label(frame2,text=str(spam2))
button2.pack()
label2.pack()
frame2.place(relx=0,rely=0)
root.after(10,busywork)
root.mainloop()

[这是关闭]但它适用于Windows而不是帧(或一般的小部件)

在我的应用程序中,我有几个框架。每个框架上都有许多标签。 busywork函数从机床读取所有这些信息。一直掌握所有信息会使整个机器变得迟钝。我想只获取和更新用户可以看到的信息。我可以通过手动保持一个告诉我最后一个.lift()ed窗口的全局来看到一种方法。但这似乎并不干净。 (总共有大约400个标签可以更新。但是在任何给定时间最多只有大约60个标签可见。而且一些'标签'实际上是图形表面,所以浪费了很多马力当它们不可见时这些)

1 个答案:

答案 0 :(得分:2)

当您单击按钮时,您可以设置一些变量以保持信息标签的可见性。

您可以将该变量添加到标签:

frame1 = Frame(...)
frame1.visible = False

或者您可以继续访问可见框架

visible = frame1

如果所有帧都是具有函数update的类,则它只能在该帧中更新值

visible.update( all_data )
相关问题