Как вставить код 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 как из отдельного файла , но при импорте, сначала открывается окно диктофона, а по закрытию уже окно второго кода.


Ответы (0 шт):