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

2024-05-10 06:00:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定哪个小部件(在本例中为框架)位于顶部(或无论如何可见)

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个标签是可见的。而且一些“标签”实际上是图形仪表面,所以当它们不可见时,更新这些标签会浪费很多人力)


Tags: text框架toproot标签framepackstr
1条回答
网友
1楼 · 发布于 2024-05-10 06:00:34

当你们点击按钮时,你们可以设置一些变量来保持标签上的信息是可见的

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

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

或者您可以保持对可视框架的访问

visible = frame1

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

visible.update( all_data )

相关问题 更多 >