tkinter是否在python 3.4.4线程中安全?

时间:2016-10-26 11:08:01

标签: python python-2.7 python-3.x tkinter python-multithreading

以下代码在python 2.7.11(安装future之后)和3.4.4

之后的行为有所不同
import tkinter as tk
from tkinter import ttk
import threading
from time import sleep

def do_something_slow():
    sleep(5)
    progressbar.grid_remove()

app = tk.Tk()
progressbar = ttk.Progressbar(app, mode='indeterminate')
progressbar.grid()
progressbar.start()
threading.Thread(target=do_something_slow).start()
app.mainloop()

在python 3.4.4中,它显示一个窗口,其中一个进度条运行5秒,然后消失,但在python 2.7.11中它显示一个窗口,其中一个进度条运行5秒,然后窗口变得无法响应

我认为使用python 2.7时出错的原因是因为我不应该在不同的线程上调用tkinter小部件(tkinter不是线程安全的 - 我应该使用队列来在线程之间进行通信),但是为什么它在python 3.4中有效?这个版本的线程安全吗?

0 个答案:

没有答案