按下多个Tkinter按钮

时间:2011-05-19 02:40:57

标签: python tkinter

嗨我想知道你是否可以做到这一点你可以一次按下一个按钮?

像:

from Tkinter import *
tkwin = Tk()
def delayedDoSomethings():
    for i in range(1,10000000):
        print 'hi',i
def delayedDoSomething():
       for i in range(1,10000000):
           print i

a = Button(tkwin, text="Go", command=delayedDoSomething)
a.pack()
b = Button(tkwin, text="Go hi", command=delayedDoSomethings)
b.pack()
tkwin.mainloop()

并且我可以点击“go”然后“去嗨”但我不能因为窗口冻结直到完成。是否有人知道如何制作它,以便你可以一次按下多一个按钮?

1 个答案:

答案 0 :(得分:2)

这里你想要的是使用线程。线程允许你同时执行多段代码(或者它们至少出现同时执行)

delayedDoSomethings()内,你需要产生一个执行实际工作的新线程,这样你就可以在主线程中将控制权返回给Tkinter。

你会在delayedDoSomething()中做同样的事情。

以下是您可以在delayedDoSomethings()

中使用的一些实际代码
def delayedDoSomethings():
    def work():
        for i in rance(1, 10000000):
            print 'hi',i
    import thread
    thread.start_new_thread(separateThread, ()) #run the work function in a separate thread.

Here是Python内置线程模块的文档,它将非常有用。