gpt4 book ai didi

python - 在 PyGTK 中获取要阻止的接口(interface)

转载 作者:行者123 更新时间:2023-11-30 23:30:30 24 4
gpt4 key购买 nike

我正在尝试使用Python和PyGTK编写一个WiFi管理界面。

用户在 gtk.TreeView 中看到可用网络的列表。然后,她/他可以选择通过单击按钮重新扫描无线网络。无论出于何种原因,重新扫描过程确实很快。事实上,速度如此之快,以至于点击按钮时感觉什么也没有发生,尽管网络列表确实正在重新扫描。

我想要做的是添加几秒钟的延迟,其中界面会阻塞并显示一个 gtk.Spinner 以便用户看到我用来显示网络列表的 gtk.TreeView 已被清除并重新填充。

显然,time.sleep() 不是正确的方法。有没有一种优雅的方法来做到这一点?

最佳答案

关于 LOC,我能想到的最短答案:

from threading import Thread
import gobject

gobject.threads_init()

time_to_wait = 2.0 # time in seconds
nonblocking_wait = Thread(target=sleep, args=(timetowait,))
nonblocking_wait.start()

while nonblocking_wait.is_alive():
nonblocking_wait.join(.05)
gtk.main_iteration_do(True) # blocks if no event is pending

再看一眼,我意识到,对于某些读者来说, sleep 线程的相关性可能很模糊。其目的是建立 time_to_wait + 0.05 秒(+ 开销)的最大时间限制!您可以使用计数器或类似的方法来完成此操作,但这样可以防止空闲循环中 CPU 上的无用负载。

这样 gtk 仍然可以处理绘制更新。

任何进度条更新或任何内容都必须放入 while 循环中。

关于python - 在 PyGTK 中获取要阻止的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540244/

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