Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在PyGTK中获取要阻止的接口_Python_Pygtk - Fatal编程技术网

Python 在PyGTK中获取要阻止的接口

Python 在PyGTK中获取要阻止的接口,python,pygtk,Python,Pygtk,我正在尝试使用Python和PyGTK编写WiFi管理界面 用户在gtk.TreeView中看到可用网络的列表。然后,他/她可以通过单击按钮重新扫描无线网络。无论出于何种原因,重新扫描过程都非常快。事实上,它是如此之快,以至于在点击按钮时感觉什么都没有发生,即使网络列表确实正在重新扫描 我想做的是增加几秒钟的延迟,接口阻塞,我显示一个gtk.Spinner,以便用户看到我用来显示网络列表的gtk.TreeView被清除并重新填充 显然,time.sleep()不是正确的方法。有没有一种优雅的方法

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

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

我想做的是增加几秒钟的延迟,接口阻塞,我显示一个
gtk.Spinner
,以便用户看到我用来显示网络列表的
gtk.TreeView
被清除并重新填充


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

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

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
再看一眼,我意识到,对于一些读者来说,睡眠线索的相关性可能是模糊的。它的目的是建立一个最大时间限制,即等待时间
秒(+/code>+
0.05秒(+/code>开销)!您可以使用计数器或类似的方法来实现这一点,但这样可以防止空闲循环中cpu上的无用负载

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


任何progressbar更新或任何内容都必须放入while循环。

虽然此答案解决了我的问题,但它不会按照我的要求阻止界面。如果要阻止用户执行任何操作,可以在进入while循环之前使用
gobject.signal\u handlers\u block\u by\u func
,不妨碍重新绘制您的应用程序。