Цель - сначала выполнить действия с виджетами (создать Button_1 и удалить Button_2), затем включить распознание речи.
Использую модуль concurrent.futures.thread, который отлично справлялся с созданием асинхронного кода, необходимого для выполнения некоторых задач, до внедрения распознания речи.
В этой попытке компилятор проходится по каждой строке - об этом говорит вывод строк, помеченных комментариями '#for test'.
Проблема : кнопки не создаются и не удаляются, но распознание речи работает :def someFunc(self, event):
print('Interface change started') #for test
#creates Button_1
#deletes config.Button_2 (from another func)
print('Interface change finished') #for test
with ThreadPoolExecutor(max_workers=5) as executor:
fut = executor.submit(self.voiceRecognition)
fut.result()
def voiceRecognition (self):
print('Voice recognition was started') #for test
r = sr.Recognizer()
with sr.Microphone(device_index=1) as sourse:
audio = r.listen(sourse)
query = r.recognize_google(audio)
print(query.lower())
print('Voice recognition was finished') #for test
Выходные данные :
Interface change started
Interface change finished
Voice recognition started
Voice recognition finished
Попробовал сделать отдельную функцию 'ProcessCallManagement' и обернуть в отдельную функцию ' interfaceChanges' действия с кнопками, но...
Проблема : не выполняются ни действия с кнопками, ни распознание речи :def processCallManagement(self, event):
with ThreadPoolExecutor(max_workers=5) as executor:
fut1 = executor.submit(self.interfaceChanges)
fut1.result()
fut2 = executor.submit(self.voiceRecognition)
fut2.result()
def interfaceChanges(self):
print('Interface change started') #for test
#creates Button_1
#deletes config.Button_2 (from another func)
print('Interface change finished') #for test
def voiceRecognition(self):
print('Voice recognition was started') #for test
r = sr.Recognizer()
with sr.Microphone(device_index=1) as sourse:
audio = r.listen(sourse)
query = r.recognize_google(audio)
print(query.lower())
print('Voice recognition was finished') #for test
Выходные данные :
Interface change started
Вот, как и что с кнопками конкретно (отдельно от контекста
они работают, и работают нормально) :
Button_1 = wx.Button(self)
self.Bind(wx.EVT_BUTTON, self.eventFunc, Button_1)
config.Button_2.Destroy()
Помогите разобраться с причинами возникновения проблем и их практическим решением по возможности используя именно модуль concurrent.futures.thread. Если это возможно, конечно же. Спасибо.