Tcl_AsyncDelete: асинхронный обработчик удален не тем потоком Прервано (ядро сброшено) - PullRequest
0 голосов
/ 03 мая 2019

при уничтожении Tkinter (уничтожить его в многопоточности) возникает проблема

import tkinter as tk import threading import pyaudio import wave import speech_recognition как sr время импорта import tkinter as tk

глобальная остановка останова = 0

глобальная отсчет счетчика = 0

def audiorecord ():

FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
CHUNK = 1024
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "file.wav"

audio = pyaudio.PyAudio()

stream = audio.open(format=FORMAT, channels=CHANNELS,
                rate=RATE, input=True,
                frames_per_buffer=CHUNK)
frames = []
global stop
while stop == 0:
    data = stream.read(CHUNK)
    frames.append(data)

print("finished recording")
stream.stop_stream()
stream.close()
audio.terminate()
waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.writeframes(b''.join(frames))
waveFile.close()

def остановлена ​​(): глобальная остановка, корневая остановка = 1 попытка: root.quit () кроме Исключения как e: print (e)

try: def tkinter ():

    global root
    root = tk.Tk()
    btn12 = tk.Button(root, text = "stop recording", command=stopped)
    btn12.pack()    
    root.mainloop()

ISSSUE OCCUR HERER

    root.destroy()

кромеИсключение как e: print (e)

try:

#start from here ------ multithreading

recording = threading.Thread(target=audiorecord, args=())
stops = threading.Thread(target=tkinter, args=())

recording.start()
stops.start()

recording.join()
stops.join()

, за исключением исключения как e: print («not success», e)

1 Ответ

0 голосов
/ 04 июня 2019

используйте функцию изъятия ()

tkinter имеет встроенную функцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...