Как вставить код Class-а в код и подвязать на кнопку в tkinter?
имеется такой код диктофона.
import wave
import os
import time
import threading
import tkinter
import pyaudio
class VoiceRecorder():
def __init__(self):
self.root = tkinter.Tk()
self.root.resizable(True, False)
self.button = tkinter.Button(
text="?",
font=('Arial', 120, "bold"),
command=self.click_handler
)
self.button.pack()
self.label = tkinter.Label(text='00:00:00')
self.label.pack()
self.recording = False
self.root.mainloop()
def click_handler(self):
if self.recording:
self.recording = False
else:
self.recording = True
threading.Thread(target=self.record).start()
def record(self):
audio = pyaudio.PyAudio()
stream = audio.open(
format=pyaudio.paInt16,
channels=1,
rate=44100,
input=True,
frames_per_buffer=1024,
# input_device_index=9
)
frames = []
start = time.time()
while self.recording:
data = stream.read(1024, exception_on_overflow=False)
frames.append(data)
passed = time.time() - start
secs = passed % 60
mins = passed // 60
hours = mins // 60
self.label.config(text=f"{int(hours):02d}:{int(mins):02d}:{int(secs):02d}")
stream.stop_stream()
stream.close()
audio.terminate()
exists = True
i = 1
while exists:
if os.path.exists(f'recording{i}.wav'):
i += 1
else:
exists = False
sound_file = wave.open(f'recording{i}.wav', 'wb')
sound_file.setnchannels(1)
sound_file.setsampwidth(audio.get_sample_size(pyaudio.paInt16))
sound_file.setframerate(44100)
sound_file.writeframes(b''.join(frames))
sound_file.close()
VoiceRecorder()
Я хочу завязать запуск диктофона на кнопку ,как мне правильно сделать? Или сделать так, чтобы диктофон был на данном окне?
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
def on_closing ():
if messagebox.askokcancel("Выход из приложения", "Хотите выйти изприложения?"):
window_conf.destroy()
window_conf = Tk()
window_conf.title("title")
window_conf.geometry("550x300")
window_conf.resizable(width=False, height=False)
window_conf_btn1 = Button(window_conf, text="record",activeforeground='#59D48C',
activebackground='#E8A12C', font=("Time New Roman", 10, 'bold'), bd=4,command=record_sound,width=15, height=2)
window_conf_btn1.place(x=390, y=120)
window_conf.protocol("WM_DELETE_WINDOW", on_closing)
window_conf.mainloop()
Пробовал делать импорт VoiceRecorder как из отдельного файла , но при импорте, сначала открывается окно диктофона, а по закрытию уже окно второго кода.