python+PyQt5 左右聲道測(cè)試源代碼
UI:

源代碼:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'MicrophoneWinFrm.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import QtCore
import logging
import os
import json
import configparser
from PyQt5.QtCore import pyqtSignal
import sys
import random#隨機(jī)數(shù)
import subprocess
import inspect
from subprocess import Popen,PIPE
from colorama import Fore,Style
import re
#pip install colorama
import pygame
#pip install pygame
class Mic_ChannelTest(QtCore.QThread):
test_result_signal = QtCore.pyqtSignal(tuple) # 新增信號(hào),傳遞一個(gè)包含設(shè)備路徑和測(cè)試結(jié)果的元組
finished_signal = QtCore.pyqtSignal() # 新增信號(hào),表示線程完成
def __init__(self, parent=None):
super(Mic_ChannelTest, self).__init__(parent)
self.is_running=True
def run(self):
self.parent().test_AudioChannel()#啟動(dòng)多線程
self.finished_signal.emit()#線程完成時(shí)發(fā)出信號(hào)
self.stop()
def stop(self):
self.is_running = False # 或者使用更安全的停止邏輯
class Ui_Form(QWidget):
updateTimer = pyqtSignal(bool) # 時(shí)間線程啟動(dòng)器
def __init__(self):
super().__init__()
self.config = configparser.ConfigParser() # 創(chuàng)建對(duì)象
self.itemName = '' # 項(xiàng)目名稱(chēng)
self.testArgs = [] # 測(cè)試參數(shù)信息
self.testStandardArgs = '' # 測(cè)試準(zhǔn)標(biāo)參數(shù)
self.Err = '' # 錯(cuò)誤信息
self.cfgArgs = [] # 測(cè)試參數(shù)
self.leftChannel_TestPass=False#左聲道測(cè)試
self.rigthChannel_TestPass=False#右聲道測(cè)試
self.leftChannelSoundFile=''#左聲道音頻文件
self.rightChannelSoundFile=''#右聲道音頻文件
self.nowTest='leftChannel'#默認(rèn)左聲道測(cè)試
self.randNum=1#隨機(jī)數(shù)
# 生成日志信息
self.logger = logging.getLogger('my_logger') # 步驟1 創(chuàng)建日志記錄器
self.logger.setLevel(logging.DEBUG) # 步驟2 將指定日志級(jí)別
self.file_handler = logging.FileHandler('./log/log.txt') # 步驟3 創(chuàng)建文件處理器
self.formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') # 步驟4 創(chuàng)建格式化器
self.file_handler.setFormatter(self.formatter) # 步驟4 將格式化器添加到處理器
self.logger.addHandler(self.file_handler) # 步驟5 將處理器添加到日志記錄器
# 讀取配置
self.config.read('./Conf/config.conf', encoding='utf-8') # 讀取配置文件,如果配置文件不存在則創(chuàng)建
#左右聲道音頻文件
self.leftChannelSoundFile=self.config.get('MicrophoneConfig','LeftChannel')#左聲道音頻文件
self.rightChannelSoundFile=self.config.get('MicrophoneConfig','RightChannel')#右聲道音頻文件
# 讀取測(cè)試配置
self.itemName = self.config.get('TestItemNameArrays', 'MicTest') # 項(xiàng)目名稱(chēng)
self.itemFailSleepExit = int(self.config.get('TestItemWinFrmSleepExit', 'MicTest')) # 項(xiàng)目測(cè)試Fail延時(shí)退出
self.testArgs.clear()
self.testArgs = self.ReadJsonInfo('./Conf/TestArgs.json') # 讀取測(cè)試參數(shù)信息
self.setupUi()
self.lbl_CurrentSwTest.setText('讀取配置信息...')
#將變量添加到容器中
self.left_buttons = [self.bp_Left_1,self.bp_Left_2,self.bp_Left_3,self.bp_Left_4,self.bp_Left_5,self.bp_Left_6,self.bp_Left_7,self.bp_Left_8]#左聲道控件
self.right_buttons=[self.bp_Rigth_1,self.bp_Rigth_2,self.bp_Rigth_3,self.bp_Rigth_4,self.bp_Rigth_5,self.bp_Rigth_6,self.bp_Rigth_7,self.bp_Rigth_8]#右聲道控件
for lbut in self.left_buttons:#遍歷左聲道控件
lbut.clicked.connect(self.on_left_button_clicked)#添加左擊事件
lbut.setEnabled(False)
for rbut in self.right_buttons:#遍歷右聲道控件
rbut.clicked.connect(self.on_right_button_clicked)#添加右擊事件
rbut.setEnabled(False)
if self.ReadJsonTestArgs(self.itemName) == True: # 讀取標(biāo)準(zhǔn)參數(shù)
test=[]#測(cè)試參數(shù)
testArgs=self.testStandardArgs.split('|')
#print(self.testStandardArgs)
if testArgs[0][testArgs[0].find('=')+1:]=='True':
self.lbl_LeftChannel_2.setText('True')
self.lbl_LeftChannel_2.setStyleSheet('background-color: rgb(85, 255, 127);')
self.label_8.setStyleSheet('background-color: rgb(85, 255, 127);')
if testArgs[1][testArgs[1].find('=')+1:]=='True':
self.lbl_RightChannel.setText('True')
self.lbl_RightChannel.setStyleSheet('background-color: rgb(85, 255, 127);')
self.label_8.setStyleSheet('background-color: rgb(85, 255, 127);')
#創(chuàng)建一個(gè)定時(shí)器來(lái)檢查左右聲道音頻診斷測(cè)試
self.timer = QTimer(self)
self.timer.setInterval(1000) # 每秒檢查一次
self.timer.timeout.connect(self.check_Test)
self.timer.start()
# 連接信號(hào)到槽
self.updateTimer.connect(self.handleTimer)
#左鍵單擊事件
def on_left_button_clicked(self):
button = self.sender()
button.setStyleSheet('background-color: rgb(85, 255, 127);')
# 假設(shè)我們根據(jù)按鈕的編號(hào)來(lái)改變顏色
button_number = self.left_buttons.index(button) + 1
print(self.randNum,button_number)
if self.randNum==button_number:
self.leftChannel_TestPass=True
self.nowTest='rigthChannel'
for lbt in self.left_buttons:
lbt.setEnabled(False)
self.handleTimer(True); # 啟動(dòng)線程
#右鍵單擊事件
def on_right_button_clicked(self):
button=self.sender()
button.setStyleSheet('background-color: rgb(85, 255, 127);')
# 假設(shè)我們根據(jù)按鈕的編號(hào)來(lái)改變顏色
button_number = self.right_buttons.index(button) + 1
if self.randNum==button_number:
self.rigthChannel_TestPass=True
for lbt in self.right_buttons:
lbt.setEnabled(False)
self.handleTimer(True); # 啟動(dòng)線程
#啟動(dòng)多線程
def start_analysis_threads(self):
# 創(chuàng)建多個(gè)線程
self.handleTimer(False) # 停止進(jìn)程
self.finished_threads = 0 # 重置計(jì)數(shù)器
thread=Mic_ChannelTest(self)
thread.start()#執(zhí)行跑線程
#判斷啟動(dòng)隨機(jī)播放音頻
def test_AudioChannel(self):
self.randNum = random.randint(1, 8) # 生成1到10之間的隨機(jī)整數(shù)
if self.leftChannel_TestPass == True: # 左聲道測(cè)試PASS
self.label_2.setText('右聲道:人機(jī)交互測(cè)試,點(diǎn)擊左邊聽(tīng)到的對(duì)應(yīng)序號(hào)按鈕..')
self.lbl_CurrentSwTest.setText('音頻右聲道測(cè)試..')
for rbut in self.right_buttons: # 遍歷右聲道控件
rbut.setStyleSheet('')
rbut.setEnabled(True)
# rbut.setStyleSheet('background-color: rgb(85, 255, 127);')
self.nowTest = 'leftChannel' # 當(dāng)前左聲道測(cè)試
self.play_mp3(f'{self.rightChannelSoundFile}') # 左聲道播放
self.play_mp3(f'Microphone/R{str(self.randNum)}.mp3') # 左聲道隨機(jī)數(shù)播放
else:
self.label_2.setText('左聲道:人機(jī)交互測(cè)試,點(diǎn)擊右邊聽(tīng)到的對(duì)應(yīng)序號(hào)按鈕..')
self.lbl_CurrentSwTest.setText('音頻左聲道測(cè)試..')
for lbut in self.left_buttons: # 遍歷左聲道控件
lbut.setEnabled(True)
lbut.setStyleSheet('')
# lbut.setStyleSheet('background-color: rgb(85, 255, 127);')
self.nowTest = 'rightChannel' # 當(dāng)前右聲道測(cè)試
self.play_mp3(f'{self.leftChannelSoundFile}') # 右聲道播放
self.play_mp3(f'Microphone/L{str(self.randNum)}.mp3') # 右聲道隨機(jī)數(shù)播放
#if self.lbl_LeftChannel_2.text()=='True' and self.lbl_RightChannel.text()=='True':
#播放MP3
def play_mp3(self,file_path):
try:
print('file_path',file_path)
pygame.mixer.init()
pygame.mixer.music.load(file_path)
pygame.mixer.music.play()
# 等待音樂(lè)播放完成
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(10)
except Exception as e:
print(f'play mp3 Err:{e}')
sys.exit(1)
# 校驗(yàn)是否完成測(cè)試
def check_Test(self):
if self.lbl_LeftChannel_2.text()=='True' and self.lbl_RightChannel.text()=='True':
if self.leftChannel_TestPass==True and self.rigthChannel_TestPass==True:
self.UpdateJsonTestArgs(self.itemName,'LeftChannel=True|RightChannel=True','PASS')#更新測(cè)試信息
self.ShowLog('測(cè)試PASS', True)
sys.exit(0)
elif self.lbl_LeftChannel_2.text()=='True':
if self.leftChannel_TestPass==True:
self.UpdateJsonTestArgs(self.itemName, 'LeftChannel=True', 'PASS') # 更新測(cè)試信息
self.ShowLog('測(cè)試PASS', True)
sys.exit(0)
elif self.lbl_RightChannel.text()=='True':
if self.rigthChannel_TestPass==True:
self.UpdateJsonTestArgs(self.itemName, 'RightChannel=True', 'PASS') # 更新測(cè)試信息
self.ShowLog('測(cè)試PASS', True)
sys.exit(0)
#self.updateTimer.emit(False) # 重新啟動(dòng)定時(shí)器
self.lbl_CurrentSwTest.setText('音頻測(cè)試中..')
self.start_analysis_threads()
# 定義觸發(fā)器
def handleTimer(self, start):
if start:
self.timer.start()
else:
self.timer.stop()
def setupUi(self):
self.setObjectName("Form")
self.resize(678, 737)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("IMAGE/Mic.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.setWindowIcon(icon)
self.gridLayout = QtWidgets.QGridLayout(self)
self.gridLayout.setObjectName("gridLayout")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.lbl_Logo = QtWidgets.QLabel(self)
self.lbl_Logo.setText("")
self.lbl_Logo.setPixmap(QtGui.QPixmap("IMAGE/logo.jpg"))
self.lbl_Logo.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_Logo.setObjectName("lbl_Logo")
self.horizontalLayout_4.addWidget(self.lbl_Logo)
self.label = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label.setFont(font)
self.label.setStyleSheet("background-color: rgb(170, 170, 127);")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.horizontalLayout_4.addWidget(self.label)
self.verticalLayout_2.addLayout(self.horizontalLayout_4)
self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.lbl_CurrentSwTest = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.lbl_CurrentSwTest.setFont(font)
self.lbl_CurrentSwTest.setStyleSheet("background-color: rgb(85, 255, 127);")
self.lbl_CurrentSwTest.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_CurrentSwTest.setObjectName("lbl_CurrentSwTest")
self.horizontalLayout_5.addWidget(self.lbl_CurrentSwTest)
self.verticalLayout_2.addLayout(self.horizontalLayout_5)
self.horizontalLayout.addLayout(self.verticalLayout_2)
self.verticalLayout_3 = QtWidgets.QVBoxLayout()
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
self.horizontalLayout_6.setObjectName("horizontalLayout_6")
self.label_5 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label_5.setFont(font)
self.label_5.setStyleSheet("background-color: rgb(255, 170, 127);")
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
self.label_5.setObjectName("label_5")
self.horizontalLayout_6.addWidget(self.label_5)
self.verticalLayout_4 = QtWidgets.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4")
self.label_4 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label_4.setFont(font)
self.label_4.setStyleSheet("background-color: rgb(255, 170, 127);")
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.verticalLayout_4.addWidget(self.label_4)
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
self.label_7 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label_7.setFont(font)
self.label_7.setStyleSheet("background-color: rgb(255, 170, 127);")
self.label_7.setAlignment(QtCore.Qt.AlignCenter)
self.label_7.setObjectName("label_7")
self.horizontalLayout_8.addWidget(self.label_7)
self.label_6 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label_6.setFont(font)
self.label_6.setStyleSheet("background-color: rgb(255, 170, 127);")
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
self.label_6.setObjectName("label_6")
self.horizontalLayout_8.addWidget(self.label_6)
self.verticalLayout_4.addLayout(self.horizontalLayout_8)
self.horizontalLayout_6.addLayout(self.verticalLayout_4)
self.verticalLayout_3.addLayout(self.horizontalLayout_6)
self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
self.horizontalLayout_7.setObjectName("horizontalLayout_7")
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
self.horizontalLayout_9.setObjectName("horizontalLayout_9")
self.label_8 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.label_8.setFont(font)
self.label_8.setAlignment(QtCore.Qt.AlignCenter)
self.label_8.setObjectName("label_8")
self.horizontalLayout_9.addWidget(self.label_8)
self.horizontalLayout_7.addLayout(self.horizontalLayout_9)
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
self.lbl_LeftChannel_2 = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.lbl_LeftChannel_2.setFont(font)
self.lbl_LeftChannel_2.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_LeftChannel_2.setObjectName("lbl_LeftChannel_2")
self.horizontalLayout_10.addWidget(self.lbl_LeftChannel_2)
self.lbl_RightChannel = QtWidgets.QLabel(self)
font = QtGui.QFont()
font.setPointSize(12)
self.lbl_RightChannel.setFont(font)
self.lbl_RightChannel.setAlignment(QtCore.Qt.AlignCenter)
self.lbl_RightChannel.setObjectName("lbl_RightChannel")
self.horizontalLayout_10.addWidget(self.lbl_RightChannel)
self.horizontalLayout_7.addLayout(self.horizontalLayout_10)
self.verticalLayout_3.addLayout(self.horizontalLayout_7)
self.horizontalLayout.addLayout(self.verticalLayout_3)
self.verticalLayout.addLayout(self.horizontalLayout,1)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.groupBox = QtWidgets.QGroupBox(self)
font = QtGui.QFont()
font.setPointSize(12)
self.groupBox.setFont(font)
self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
self.groupBox.setObjectName("groupBox")
self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox)
self.gridLayout_3.setObjectName("gridLayout_3")
self.verticalLayout_5 = QtWidgets.QVBoxLayout()
self.verticalLayout_5.setObjectName("verticalLayout_5")
self.horizontalLayout_11 = QtWidgets.QHBoxLayout()
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.label_13 = QtWidgets.QLabel(self.groupBox)
self.label_13.setText("")
self.label_13.setObjectName("label_13")
self.horizontalLayout_11.addWidget(self.label_13)
font = QtGui.QFont()
font.setPointSize(18)
self.bp_Left_1 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_1.setObjectName("bp_Left_1")
self.bp_Left_1.setFont(font)
self.horizontalLayout_11.addWidget(self.bp_Left_1)
self.label_12 = QtWidgets.QLabel(self.groupBox)
self.label_12.setText("")
self.label_12.setObjectName("label_12")
self.horizontalLayout_11.addWidget(self.label_12)
self.verticalLayout_5.addLayout(self.horizontalLayout_11)
self.horizontalLayout_12 = QtWidgets.QHBoxLayout()
self.horizontalLayout_12.setObjectName("horizontalLayout_12")
self.label_14 = QtWidgets.QLabel(self.groupBox)
self.label_14.setText("")
self.label_14.setObjectName("label_14")
self.horizontalLayout_12.addWidget(self.label_14)
self.bp_Left_2 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_2.setObjectName("bp_Left_2")
self.bp_Left_2.setFont(font)
self.horizontalLayout_12.addWidget(self.bp_Left_2)
self.label_21 = QtWidgets.QLabel(self.groupBox)
self.label_21.setText("")
self.label_21.setObjectName("label_21")
self.horizontalLayout_12.addWidget(self.label_21)
self.verticalLayout_5.addLayout(self.horizontalLayout_12)
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
self.label_15 = QtWidgets.QLabel(self.groupBox)
self.label_15.setText("")
self.label_15.setObjectName("label_15")
self.horizontalLayout_13.addWidget(self.label_15)
self.bp_Left_3 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_3.setObjectName("bp_Left_3")
self.bp_Left_3.setFont(font)
self.horizontalLayout_13.addWidget(self.bp_Left_3)
self.label_22 = QtWidgets.QLabel(self.groupBox)
self.label_22.setText("")
self.label_22.setObjectName("label_22")
self.horizontalLayout_13.addWidget(self.label_22)
self.verticalLayout_5.addLayout(self.horizontalLayout_13)
self.horizontalLayout_24 = QtWidgets.QHBoxLayout()
self.horizontalLayout_24.setObjectName("horizontalLayout_24")
self.label_30 = QtWidgets.QLabel(self.groupBox)
self.label_30.setText("")
self.label_30.setObjectName("label_30")
self.horizontalLayout_24.addWidget(self.label_30)
self.bp_Left_4 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_4.setObjectName("bp_Left_4")
self.bp_Left_4.setFont(font)
self.horizontalLayout_24.addWidget(self.bp_Left_4)
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.horizontalLayout_24.addWidget(self.label_3)
self.verticalLayout_5.addLayout(self.horizontalLayout_24)
self.horizontalLayout_23 = QtWidgets.QHBoxLayout()
self.horizontalLayout_23.setObjectName("horizontalLayout_23")
self.label_31 = QtWidgets.QLabel(self.groupBox)
self.label_31.setText("")
self.label_31.setObjectName("label_31")
self.horizontalLayout_23.addWidget(self.label_31)
self.bp_Left_5 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_5.setObjectName("bp_Left_5")
self.bp_Left_5.setFont(font)
self.horizontalLayout_23.addWidget(self.bp_Left_5)
self.label_11 = QtWidgets.QLabel(self.groupBox)
self.label_11.setText("")
self.label_11.setObjectName("label_11")
self.horizontalLayout_23.addWidget(self.label_11)
self.verticalLayout_5.addLayout(self.horizontalLayout_23)
self.horizontalLayout_22 = QtWidgets.QHBoxLayout()
self.horizontalLayout_22.setObjectName("horizontalLayout_22")
self.label_32 = QtWidgets.QLabel(self.groupBox)
self.label_32.setText("")
self.label_32.setObjectName("label_32")
self.horizontalLayout_22.addWidget(self.label_32)
self.bp_Left_6 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_6.setObjectName("bp_Left_6")
self.bp_Left_6.setFont(font)
self.horizontalLayout_22.addWidget(self.bp_Left_6)
self.label_28 = QtWidgets.QLabel(self.groupBox)
self.label_28.setText("")
self.label_28.setObjectName("label_28")
self.horizontalLayout_22.addWidget(self.label_28)
self.verticalLayout_5.addLayout(self.horizontalLayout_22)
self.horizontalLayout_21 = QtWidgets.QHBoxLayout()
self.horizontalLayout_21.setObjectName("horizontalLayout_21")
self.label_33 = QtWidgets.QLabel(self.groupBox)
self.label_33.setText("")
self.label_33.setObjectName("label_33")
self.horizontalLayout_21.addWidget(self.label_33)
self.bp_Left_7 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_7.setObjectName("bp_Left_7")
self.bp_Left_7.setFont(font)
self.horizontalLayout_21.addWidget(self.bp_Left_7)
self.label_29 = QtWidgets.QLabel(self.groupBox)
self.label_29.setText("")
self.label_29.setObjectName("label_29")
self.horizontalLayout_21.addWidget(self.label_29)
self.verticalLayout_5.addLayout(self.horizontalLayout_21)
self.horizontalLayout_14 = QtWidgets.QHBoxLayout()
self.horizontalLayout_14.setObjectName("horizontalLayout_14")
self.label_16 = QtWidgets.QLabel(self.groupBox)
self.label_16.setText("")
self.label_16.setObjectName("label_16")
self.horizontalLayout_14.addWidget(self.label_16)
self.bp_Left_8 = QtWidgets.QPushButton(self.groupBox)
self.bp_Left_8.setObjectName("bp_Left_8")
self.bp_Left_8.setFont(font)
self.horizontalLayout_14.addWidget(self.bp_Left_8)
self.label_23 = QtWidgets.QLabel(self.groupBox)
self.label_23.setText("")
self.label_23.setObjectName("label_23")
self.horizontalLayout_14.addWidget(self.label_23)
self.verticalLayout_5.addLayout(self.horizontalLayout_14)
self.gridLayout_3.addLayout(self.verticalLayout_5, 0, 0, 1, 1)
self.horizontalLayout_2.addWidget(self.groupBox)
self.groupBox_2 = QtWidgets.QGroupBox(self)
font = QtGui.QFont()
font.setPointSize(12)
self.groupBox_2.setFont(font)
self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
self.groupBox_2.setObjectName("groupBox_2")
self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox_2)
self.gridLayout_4.setObjectName("gridLayout_4")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
self.horizontalLayout_15.setObjectName("horizontalLayout_15")
self.label_24 = QtWidgets.QLabel(self.groupBox_2)
self.label_24.setText("")
self.label_24.setObjectName("label_24")
font = QtGui.QFont()
font.setPointSize(18)
self.horizontalLayout_15.addWidget(self.label_24)
self.bp_Rigth_1 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_1.setObjectName("bp_Rigth_1")
self.bp_Rigth_1.setFont(font)
self.horizontalLayout_15.addWidget(self.bp_Rigth_1)
self.label_17 = QtWidgets.QLabel(self.groupBox_2)
self.label_17.setText("")
self.label_17.setObjectName("label_17")
self.horizontalLayout_15.addWidget(self.label_17)
self.verticalLayout_6.addLayout(self.horizontalLayout_15)
self.horizontalLayout_27 = QtWidgets.QHBoxLayout()
self.horizontalLayout_27.setObjectName("horizontalLayout_27")
self.label_38 = QtWidgets.QLabel(self.groupBox_2)
self.label_38.setText("")
self.label_38.setObjectName("label_38")
self.horizontalLayout_27.addWidget(self.label_38)
self.bp_Rigth_2 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_2.setObjectName("bp_Rigth_2")
self.bp_Rigth_2.setFont(font)
self.horizontalLayout_27.addWidget(self.bp_Rigth_2)
self.label_34 = QtWidgets.QLabel(self.groupBox_2)
self.label_34.setText("")
self.label_34.setObjectName("label_34")
self.horizontalLayout_27.addWidget(self.label_34)
self.verticalLayout_6.addLayout(self.horizontalLayout_27)
self.horizontalLayout_28 = QtWidgets.QHBoxLayout()
self.horizontalLayout_28.setObjectName("horizontalLayout_28")
self.label_39 = QtWidgets.QLabel(self.groupBox_2)
self.label_39.setText("")
self.label_39.setObjectName("label_39")
self.horizontalLayout_28.addWidget(self.label_39)
self.bp_Rigth_3 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_3.setObjectName("bp_Rigth_3")
self.bp_Rigth_3.setFont(font)
self.horizontalLayout_28.addWidget(self.bp_Rigth_3)
self.label_35 = QtWidgets.QLabel(self.groupBox_2)
self.label_35.setText("")
self.label_35.setObjectName("label_35")
self.horizontalLayout_28.addWidget(self.label_35)
self.verticalLayout_6.addLayout(self.horizontalLayout_28)
self.horizontalLayout_26 = QtWidgets.QHBoxLayout()
self.horizontalLayout_26.setObjectName("horizontalLayout_26")
self.label_40 = QtWidgets.QLabel(self.groupBox_2)
self.label_40.setText("")
self.label_40.setObjectName("label_40")
self.horizontalLayout_26.addWidget(self.label_40)
self.bp_Rigth_4 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_4.setObjectName("bp_Rigth_4")
self.bp_Rigth_4.setFont(font)
self.horizontalLayout_26.addWidget(self.bp_Rigth_4)
self.label_36 = QtWidgets.QLabel(self.groupBox_2)
self.label_36.setText("")
self.label_36.setObjectName("label_36")
self.horizontalLayout_26.addWidget(self.label_36)
self.verticalLayout_6.addLayout(self.horizontalLayout_26)
self.horizontalLayout_25 = QtWidgets.QHBoxLayout()
self.horizontalLayout_25.setObjectName("horizontalLayout_25")
self.label_41 = QtWidgets.QLabel(self.groupBox_2)
self.label_41.setText("")
self.label_41.setObjectName("label_41")
self.horizontalLayout_25.addWidget(self.label_41)
self.bp_Rigth_5 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_5.setObjectName("bp_Rigth_5")
self.bp_Rigth_5.setFont(font)
self.horizontalLayout_25.addWidget(self.bp_Rigth_5)
self.label_37 = QtWidgets.QLabel(self.groupBox_2)
self.label_37.setText("")
self.label_37.setObjectName("label_37")
self.horizontalLayout_25.addWidget(self.label_37)
self.verticalLayout_6.addLayout(self.horizontalLayout_25)
self.horizontalLayout_17 = QtWidgets.QHBoxLayout()
self.horizontalLayout_17.setObjectName("horizontalLayout_17")
self.label_25 = QtWidgets.QLabel(self.groupBox_2)
self.label_25.setText("")
self.label_25.setObjectName("label_25")
self.horizontalLayout_17.addWidget(self.label_25)
self.bp_Rigth_6 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_6.setObjectName("bp_Rigth_6")
self.bp_Rigth_6.setFont(font)
self.horizontalLayout_17.addWidget(self.bp_Rigth_6)
self.label_18 = QtWidgets.QLabel(self.groupBox_2)
self.label_18.setText("")
self.label_18.setObjectName("label_18")
self.horizontalLayout_17.addWidget(self.label_18)
self.verticalLayout_6.addLayout(self.horizontalLayout_17)
self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
self.horizontalLayout_18.setObjectName("horizontalLayout_18")
self.label_26 = QtWidgets.QLabel(self.groupBox_2)
self.label_26.setText("")
self.label_26.setObjectName("label_26")
self.horizontalLayout_18.addWidget(self.label_26)
self.bp_Rigth_7 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_7.setObjectName("bp_Rigth_7")
self.bp_Rigth_7.setFont(font)
self.horizontalLayout_18.addWidget(self.bp_Rigth_7)
self.label_19 = QtWidgets.QLabel(self.groupBox_2)
self.label_19.setText("")
self.label_19.setObjectName("label_19")
self.horizontalLayout_18.addWidget(self.label_19)
self.verticalLayout_6.addLayout(self.horizontalLayout_18)
self.horizontalLayout_19 = QtWidgets.QHBoxLayout()
self.horizontalLayout_19.setObjectName("horizontalLayout_19")
self.label_27 = QtWidgets.QLabel(self.groupBox_2)
self.label_27.setText("")
self.label_27.setObjectName("label_27")
self.horizontalLayout_19.addWidget(self.label_27)
self.bp_Rigth_8 = QtWidgets.QPushButton(self.groupBox_2)
self.bp_Rigth_8.setObjectName("bp_Rigth_8")
self.bp_Rigth_8.setFont(font)
self.horizontalLayout_19.addWidget(self.bp_Rigth_8)
self.label_20 = QtWidgets.QLabel(self.groupBox_2)
self.label_20.setText("")
self.label_20.setObjectName("label_20")
self.horizontalLayout_19.addWidget(self.label_20)
self.verticalLayout_6.addLayout(self.horizontalLayout_19)
self.gridLayout_4.addLayout(self.verticalLayout_6, 0, 0, 1, 1)
self.horizontalLayout_2.addWidget(self.groupBox_2)
self.verticalLayout.addLayout(self.horizontalLayout_2,7)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.groupBox_3 = QtWidgets.QGroupBox(self)
font = QtGui.QFont()
font.setPointSize(12)
self.groupBox_3.setFont(font)
self.groupBox_3.setObjectName("groupBox_3")
self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_3)
self.gridLayout_2.setObjectName("gridLayout_2")
self.label_2 = QtWidgets.QLabel(self.groupBox_3)
self.label_2.setStyleSheet("background-color: rgb(0, 0, 0);\n"
"color: rgb(255, 255, 127);")
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1)
self.horizontalLayout_3.addWidget(self.groupBox_3)
self.verticalLayout.addLayout(self.horizontalLayout_3,2)
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)
self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint) # 只顯示最小化按鈕和關(guān)閉按鈕
# 更新測(cè)試參數(shù)json,itemName:項(xiàng)目名稱(chēng),readValue:讀取值,testResult:測(cè)試結(jié)果
def UpdateJsonTestArgs(self, itemName, readValue, testResult):
try:
updateTestArgs = [] # 更新的測(cè)試參數(shù)
self.testArgs = self.ReadJsonInfo('./Conf/TestArgs.json')
for js in self.testArgs:
if itemName in js['ItemName']:
js['Read'] = readValue # 讀取的值
js['TestResult'] = testResult # 測(cè)試結(jié)果
updateTestArgs.append(js)
else:
updateTestArgs.append(js)
with open("./Conf/TestArgs.json", "w") as write_file:
json.dump(updateTestArgs, write_file)
return True
except Exception as e:
self.ShowLog("Read TestArgs.json ItemName:" + itemName + " Info Err:" + str(e), False)
sys.exit(1)
# 啟動(dòng)線重腳本
def TestThread(self):
pass
# self.t_autoplay=Thread(target=self.Test)
# self.t_autoplay.start()
# 讀取項(xiàng)目參數(shù)信息,itemName:項(xiàng)目名稱(chēng)
def ReadJsonTestArgs(self, itemName):
try:
#print('self.testArgs:', self.testArgs)
self.testArgs = self.ReadJsonInfo('./Conf/TestArgs.json')
for js in self.testArgs:
if itemName in js['ItemName']:
self.testStandardArgs = js['Standard']
return True
self.ShowLog('Read TestArgs.json ItemName:' + itemName + ' Info Is Empty!!', False)
sys.exit(1)
except Exception as e:
self.ShowLog("Read TestArgs.json ItemName:" + itemName + " Info Err:" + str(e), False)
sys.exit(1)
def retranslateUi(self):
_translate = QtCore.QCoreApplication.translate
self.setWindowTitle(_translate("Form", "Mic-【測(cè)試】"))
self.label.setText(_translate("Form", "控制過(guò)程"))
self.lbl_CurrentSwTest.setText(_translate("Form", "Wait..."))
self.label_5.setText(_translate("Form", "測(cè)試項(xiàng)目"))
self.label_4.setText(_translate("Form", "音頻聲道"))
self.label_7.setText(_translate("Form", "左聲道"))
self.label_6.setText(_translate("Form", "右聲道"))
self.label_8.setText(_translate("Form", "喇叭測(cè)試"))
self.lbl_LeftChannel_2.setText(_translate("Form", "N/A"))
self.lbl_RightChannel.setText(_translate("Form", "N/A"))
self.groupBox.setTitle(_translate("Form", "【左聲道】"))
self.bp_Left_1.setText(_translate("Form", "1"))
self.bp_Left_2.setText(_translate("Form", "2"))
self.bp_Left_3.setText(_translate("Form", "3"))
self.bp_Left_4.setText(_translate("Form", "4"))
self.bp_Left_5.setText(_translate("Form", "5"))
self.bp_Left_6.setText(_translate("Form", "6"))
self.bp_Left_7.setText(_translate("Form", "7"))
self.bp_Left_8.setText(_translate("Form", "8"))
self.groupBox_2.setTitle(_translate("Form", "【右聲道】"))
self.bp_Rigth_1.setText(_translate("Form", "1"))
self.bp_Rigth_2.setText(_translate("Form", "2"))
self.bp_Rigth_3.setText(_translate("Form", "3"))
self.bp_Rigth_4.setText(_translate("Form", "4"))
self.bp_Rigth_5.setText(_translate("Form", "5"))
self.bp_Rigth_6.setText(_translate("Form", "6"))
self.bp_Rigth_7.setText(_translate("Form", "7"))
self.bp_Rigth_8.setText(_translate("Form", "8"))
self.groupBox_3.setTitle(_translate("Form", "【日志】"))
self.label_2.setText(_translate("Form", "待測(cè)試.."))
# 讀取json信息
def ReadJsonInfo(self, fileName):
try:
if os.path.exists(fileName):
f = open(fileName, 'r', encoding='utf-8')
return json.loads(f.read())
except Exception as e:
self.ShowLog("Read " + fileName + " Err:" + str(e), False)
#sys.exit(1)
# 手動(dòng)關(guān)閉窗口
def closeEvent(self, event):
# 告知線程停止運(yùn)行
sys.exit(1)
# 定義一個(gè)函數(shù)使得函數(shù)窗口居中顯示
def Center(self):
# 獲取屏幕尺寸
screen_geometry = app.desktop().availableGeometry()
# 計(jì)算窗口居中位置
x = (screen_geometry.width() - self.width()) // 2
y = (screen_geometry.height() - self.height()) // 2
# 設(shè)置窗口位置
self.move(x, y)
# 打印的信息
def ShowLog(self, log, isPass):
try:
if isPass == True:
self.label_2.setStyleSheet("background-color: rgb(85, 255, 127);color:green;")
self.logger.info(str(log))
self.label_2.setText("TEST PASS")
else:
self.label_2.setStyleSheet("background-color: rgb(85, 255, 127);color: red;")
self.logger.error(str(log))
self.label_2.setText(log)
except Exception as e:
print("\033[1;31m" + str(e) + " \033[0m")
#sys.exit(1)
if __name__=='__main__':
app=QApplication(sys.argv)
win=Ui_Form()
win.Center() # 居中
win.show()
#win.start_realtime_audio_processing() # 啟動(dòng)實(shí)時(shí)音頻處理
sys.exit(app.exec_())到此這篇關(guān)于python+PyQt5 左右聲道測(cè)試的文章就介紹到這了,更多相關(guān)python 左右聲道測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mac在python3環(huán)境下安裝virtualwrapper遇到的問(wèn)題及解決方法
這篇文章主要介紹了Mac在python3環(huán)境下安裝virtualwrapper遇到的問(wèn)題及解決方法,我在使用mac安裝virtualwrapper的時(shí)候遇到了問(wèn)題,搞了好長(zhǎng)時(shí)間,,在這里總結(jié)一下分享出來(lái),供遇到相同的問(wèn)題的朋友使用,少走些彎路,需要的朋友可以參考下2019-07-07
python將字母轉(zhuǎn)化為數(shù)字實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于python如何將字母轉(zhuǎn)化為數(shù)字的相關(guān)實(shí)例內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2019-10-10
VTK與Python實(shí)現(xiàn)機(jī)械臂三維模型可視化詳解
這篇文章主要介紹了VTK與Python實(shí)現(xiàn)機(jī)械臂三維模型可視化詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Python UI自動(dòng)化測(cè)試Web frame及多窗口切換
這篇文章主要為大家介紹了Python UI自動(dòng)化測(cè)試Web frame及多窗口切換,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
python應(yīng)用之如何使用Python發(fā)送通知到微信
現(xiàn)在通過(guò)發(fā)微信信息來(lái)做消息通知和告警已經(jīng)很普遍了,下面這篇文章主要給大家介紹了關(guān)于python應(yīng)用之如何使用Python發(fā)送通知到微信的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
Python 實(shí)現(xiàn)自動(dòng)登錄+點(diǎn)擊+滑動(dòng)驗(yàn)證功能
這篇文章主要介紹了Python 實(shí)現(xiàn)自動(dòng)登錄+點(diǎn)擊+滑動(dòng)驗(yàn)證功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
關(guān)于TensorFlow新舊版本函數(shù)接口變化詳解
今天小編就為大家分享一篇關(guān)于TensorFlow新舊版本函數(shù)接口變化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02

