我的python脚本有这个“问题”。 我使用pygtk创建窗口(带有一个文本字段)然后我的脚本执行数据库查询并准备存储到txt文件中的数据。一切都很好,但我只有一件事 - 这个功能大约运行。 2-4分钟,在此期间我的程序窗口没有“响应”,所以它看起来像程序窗口冻结(但脚本正在运行,窗口在完成后再次“活动”)。
我怎么能对待这种行为?我想让我的窗口响应所有时间。例如:让文本字段“正在工作......”。
答案 0 :(得分:1)
您需要在应用程序中使用线程。每当您有一个长时间运行的进程时,您需要将该工作放入一个单独的线程并将进度更新发送到主线程。在找到合适的example here之前,我已经回答了类似的问题。下面提供了一个较短的虚拟实例。
示例强>
import gtk, gobject, urllib, time, threading
def run():
for i in range(50):
gobject.idle_add(button.set_label, '%s/50 complete' % i)
time.sleep(0.1)
def clicked(button):
threading.Thread(target=run).start()
gtk.gdk.threads_init()
win = gtk.Window()
button = gtk.Button(label="Start")
button.connect('clicked', clicked)
win.add(button)
win.show_all()
gtk.main()