Блокировка графического интерфейса пользователя Python tkinter eventlet.spawn - PullRequest
0 голосов
/ 13 мая 2019

Проблема может быть разбита так просто: если я использую многопоточность для запуска Thread, а затем запускаю свой python GUI, он работает нормально. Но если я заменим на eventlet и использую eventlet.spawn, а затем запустлю мой графический интерфейс, графический интерфейс все равно будет работать нормально, но функция, вызываемая eventlet.spawn, не будет выполняться. (по той причине, что я настраивал клиент-серверы на разных машинах, Thread будет вызывать проблемы, а eventlet работает, поэтому я использую eventlet)

Для eventlet, я обезьяна залатала его сверху

import eventlet
eventlet.monkey_patch()

Я пробовал eventlet.monkey_patch (thread = False) все другие настройки, предложенные в некоторых блогах Google, просто не будет работать

import eventlet
import tkinter as tk
from tkinter import *
eventlet.monkey_patch()

from lib1 import func1

eventlet.spawn(func1) #while loop producing logs

root=tk.Tk()
Button(root,text='print',command=lambda:print('hello')).pack()
root.mainloop()

в принципе, если я заменю eventlet на Thread, тогда все в порядке, но тогда это не то, что я хотел, так как Thread вызывает проблему с клиент-сервером. С приведенным выше кодом func1 не будет создавать журналы, которые он должен производить. кнопка печати в графическом интерфейсе работает нормально. Я ожидал, что func1 выполнится правильно.

...