+ -
当前位置:首页 → 问答吧 → 关于Tkinter,多线程的问题

关于Tkinter,多线程的问题

时间:2011-08-29

来源:互联网

Python code
#coding=utf-8

import Tkinter

import threading
import multiprocessing
import string
import time

def f1(s):
    time.sleep(1)
    print s
    return s

def go():
    b['state'] = Tkinter.DISABLED
    p = multiprocessing.Pool(3)
    for r in p.map(f1, [c for c in string.lowercase]):
        print r
    b['state'] = Tkinter.NORMAL

def pgo():
    t= threading.Thread(target=go)
    t.start()


root = Tkinter.Tk()
b = Tkinter.Button(root, text=u"go", command=pgo)
b.pack()
root.mainloop()



对于上面的这段代码,我想要的效果是,点击go按钮,程序开始做事情(做事情的时候要用到,multiprocessing.map),同时设置go按钮的状态为不可用,但主UI界面不能阻塞,事情做完,go按钮的状态恢复为正常。
但事不如人意啊!当我点击go按钮时,就突然多出了与主界面一样的另外三个界面,当把这三个多出事的界面关闭后,程序才开始做事情(即输出26个字母)。原因我实在是想不出,请大家帮帮忙,在此非常感谢。

作者: tinym87   发布时间: 2011-08-29

补充一下,我用的是py2.7

作者: tinym87   发布时间: 2011-08-29

老大们,没人帮我吗!多谢。
我在线等啊...........

作者: tinym87   发布时间: 2011-08-29