Является ли tkinter в python 3.4.4 потокобезопасным?

Следующий код ведет себя по-разному в 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 не безопасен для потоков - я должен использовать очереди для связи между потоками), но тогда почему работа в питоне 3.4? Эта версия безопасна?

0 ответов

Другие вопросы по тегам