python开发gui线程_Python Tkinter:如何让GUI在线程运行时保持响应?

例如:import threading

import time

import Tkinter

class MyThread(threading.Thread):

def __init__(self):

threading.Thread.__init__(self)

def run(self):

print "Step Two"

time.sleep(20)

class MyApp(Tkinter.Tk):

def __init__(self):

Tkinter.Tk.__init__(self)

self.my_widgets()

def my_widgets(self):

self.grid()

self.my_button = Tkinter.Button(self, text="Start my function",

command=self.my_function)

self.my_button.grid(row=0, column=0)

def my_function(self):

print "Step One"

mt = MyThread()

mt.start()

while mt.isAlive():

self.update()

print "Step Three"

print "end"

def main():

my_app = MyApp()

my_app.mainloop()

if __name__ == "__main__":

main()

好吧,如果我开始我的例子,它的工作预期。我点击一个按钮,我的_功能启动,GUI响应。但是我已经读到我应该避免使用update()。所以,如果有人能解释为什么以及如何正确地等待线程,那就太好了?第二步是在一个线程中,因为它比第一步和第三步花费的时间要长得多,否则它会阻塞GUI。

我是Python新手,我试图编写我的第一个“程序”。也许我的想法是错误的,因为我不是很有经验。。。

谨致问候,

大卫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值