Tkinter запускает и останавливает запись экрана, когда кнопки и функции класса не работаютPython

Программы на Python
Гость
Tkinter запускает и останавливает запись экрана, когда кнопки и функции класса не работают

Сообщение Гость »


Я хочу создать простой пользовательский интерфейс для записи экрана. В моем пользовательском интерфейсе есть две кнопки «Начать запись экрана» и «Остановить запись экрана». Я могу начать запись экрана, но когда я нажимаю кнопку «Стоп», запись не останавливается, и я получаю следующий вывод:

В Screenrecorder.stop_recording() отсутствует 1 обязательный позиционный аргумент: 'out'

Это мой класс Screenrecorder:

импортировать cv2 импортировать numpy как np импортировать pyautogui класс Screenrecorder(): защита start_recording(): # разрешение экрана, получите его с помощью самого pyautogui SCREEN_SIZE = кортеж(pyautogui.size()) # определяем кодек fourcc = cv2.VideoWriter_fourcc(*"XVID") # кадров в секунду кадр/с = 12,0 # создаем объект записи видео out = cv2.VideoWriter("output.avi", fourcc, fps, (SCREEN_SIZE)) статус = Истина пока статус: #сделай скриншот img = pyautogui.screenshot() # преобразуем эти пиксели в правильный массив numpy для работы с OpenCV кадр = np.array(img) # конвертируем цвета из BGR в RGB рамка = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # пишем кадр out.write(кадр) вернуться защита stop_recording (выход): # убедитесь, что все закрыто при выходеq cv2.destroyAllWindows() out.release() Разве моя функция «stop_recording» не должна получить «возврат»? Что я здесь делаю не так? Я читал, что использование return — это один из способов передачи переменных другим функциям, и я не хочу использовать глобальные переменные.

Код пользовательского интерфейса:
# ScreenRecorder # из PyscreenrecClass импортировать MyScreenRecorder из CV2Class импорта ScreenRecorder # импортируем pyscreenrec # Скриншот из ScreenshotClass импорта Скриншот из импорта tkinter * из tkinter импортировать ttk корень = Тк() root.title("Рекордер") root.geometry("400x900") мэйнфрейм = ttk.Frame(корневой) root.iconbitmap("icon.ico") tabControl = ttk.Notebook(корневой) tab1 = ttk.Frame(tabControl) tab2 = ttk.Frame(tabControl) tabControl.add(tab1, text ='Запись экрана') tabControl.add(tab2, text ='Настройки') tabControl.pack(expand = 1, fill="both") sr = ScreenRecorder() # Верно? Button(tab1, text="Активировать режим снимка экрана", команда=Screenshot.TakeScreenshot).pack() Button(tab1, text="Начать запись экрана", команда=sr.start_recording()).pack() Button(tab1, text="Остановить запись экрана", команда=sr.stop_recording()).pack() корень.mainloop()

Вернуться в «Python»