我想确定哪个小部件(在这种情况下是框架)在顶部(或者仍然是可见的).
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个标签可见.而且一些’标签’实际上是图形表面,所以浪费了很多马力当它们不可见时)
最佳答案 单击按钮时,您可以设置一些变量以保持信息标签的可见性.
您可以将该变量添加到标签:
frame1 = Frame(...)
frame1.visible = False
或者您可以访问可见帧
visible = frame1
如果所有帧都是具有功能更新的类,则它只能在该帧中更新值
visible.update( all_data )