gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:48:40 25 4
gpt4 key购买 nike

我想确定哪个小部件(在这种情况下为框架)在顶部(或无论如何可见)。

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()

[这很接近]但它适用于窗口而不是框架(或一般的小部件)

在我的应用程序中,我有几个框架。每个框架上都有许多标签。繁忙工作功能从机床读取所有这些信息。一直获取所有信息会使整个机器变得缓慢。我只想获取和更新用户可以看到的信息。我可以通过手动保留一个告诉我最后一个 .lift()ed 窗口的全局变量来找到一种方法。但这似乎并不干净。 (总共有大约 400 个标签被更新。但是在任何给定时间最多只有大约 60 个可见。并且一些“标签”实际上是图形仪表面,因此大量的马力被浪费在更新这些当它们不可见时)

最佳答案

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

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

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

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

如果所有框架都是具有函数 update 的类它只能在该帧中更新值
visible.update( all_data )

关于python - 确定哪个 Tkinter 小部件位于顶部(或可见),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24702973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com