遇到了pygame报错,不知道问题在哪
程式思路:1.将声音输出调到最大
2.有3个录音文件,
一边播放录音文件,一边弹窗询问是否有声音
若在声音播放完成前点击了是/否的选项,就强行停止当前声音播放,
3.开始播放下一个录音文件并弹出新的窗口来问是否有声音
问题描述:
我发现在强行关闭音频播放的时候可能导致如下错误,但是不知道如何设置防止
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA78AAABHCAYAAADPyfBzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAADdiSURBVHhe7d0J9G9T+fjxgxIqJUopNyVTKYlociVTimSIJl1qpTTQMrQiy/q3aq1WA9GwSrVSXaFbkUKGIg2GEBEaaEaIkjI08O+1fZ77O/f4fO73nM9w7/d+7/Ne66z7vedzPvvs/eznefbz7L3P+Swza9as+6tFzLLLLlttttlm1VprrVX997//ra655prq2muvre67777eFQuyxhprVOuvv3512WWXVXfccUfv7AOstNJK1SMf+cjq5ptv7p1ZPBx55JHVk570pGru3LnVaaed1jubbLnlltUqq6xSnXXWWdXdd9/dO7sgO+64Y3X//fdXp59+eu/Mg6Ezq666anXbbbcN1JNheMxjHlPNnj27uv7666urrrqqd3bhrLvuutW2225b3XDDDdXZZ59d3XXXXb1PkiRJkiRJkiSZriyW5HcmkslvkiRJkiRJkiTJ9GXZ3r/JiFx55ZXVxRdfXN100029M0mSJEmSJEmSJMl0IVd+kyRJkiRJkiRJkhlPrvwmSZIkSZIkSZIkM55MfpMkSZIkSZIkSZIZTya/SZIkSZIkSZIkyYwnk98kSZIkSZIkSZJkxpPJb5IkSbLE8YQnPKHaaKONqoc//OG9M0kyc3joQx9aPeMZz6jWWmut3plkJvP4xz++2myzzapNNtmkWmWVVXpnkySZBMs96lGP+n+9v5dY1ltvvWqdddYpv7PreOITn1jdd9991T/+8Y/eFUsu0bbllluuuuOOO3pnkySZ6UjuBL+rrrpqdfPNN/fOJnjMYx5T7b777tX2229f/fznP6/++te/9j5JkgezJI6jEqD99tuvWnfddas//vGP1d/+9rfeJ8lMZKeddqre+MY3lgT4z3/+c/Xb3/6290nS5NGPfnT1zGc+s5o1a9b8uN+YkONk0pa+ye+znvWs6ilPecp8paofZtlvu+223pXdEdAZiMxqjmsQ2nfffas99tijeuELX1iOzTffvLr11lurX/3qV70rhqOfHNSf4f373/+u7rnnnt6Vw2FQe/KTn1zdfffdA8uKtv3rX/+qrrjiit7ZJElmOi9+8Yurt771rdVTn/rU6uyzz+6dHR+T8MWLAmPQDjvsUG211VYlQLz00kurO++8s/dpkjyYSY+jk7CllVZaqQT3VgIf97jHVddcc02JFUZlmWWWKQsEJgOUv+aaa5b6P/KRjyzli22WJtrEYcPQVSe22GKL4uv1z69//evqF7/4Re+T6YV2mZSlN/XYOOLju+66a6xy7Mf6669fHXjggWWMjLhfHy5snJxUPydLJn2T33e/+93VjjvuOF+p6sf/rq9+9KMf9a7sznbbbVdmt6zM/uxnP+udHQ0DA4P705/+VAKj5ZdfvrryyitHTn77yUFizfA4tFtuuaXcd1je9ra3lZWLX/7yl2Wmrx8cooHKNZn8JsnSg8Hatt6///3vE0l+J+GLFwXPf/7zy6qvSdjjjz+++t3vftf7JEn6M+lxdBK2JEj/wx/+UBIiMYeA/brrriv3GBaJlbJ23nnncphAetGLXlTiGvexW849lybaxGHD0FUn/vvf/1bLLrtsdf3115cYe7qu9Mek7OzZsxeIjR0makzSjFOO/VhhhRXKZI37mPi06muCYWHj5KT6OVkyGfjML0O89tprq4suumiBg+KMwsorr1xmNDnhcXHyySdXH/7wh8thcBgnHJfgStt/8pOflAT7sY99bLXrrrtWL3nJS0ZqhxVkiXqSJMmiZhK+eNLYAm7V9yEPeUgJdEad4EyScTApW7KN84wzzqjuvffeauutty4rV6Ow+uqrV294wxvKBJKk4ac//en8uE484vzSxqTisK46cfnll1dHH3109elPf3qJmNDzqEk9N3BccskliyRpJ59jjjmmxPxf+9rXin1MRcbbSZ1lZs2adX/v7/kceeSRxUl+9KMfnXKWlHHb/sDQPU8D22bMyv/+97+v7r///qJ08byNmcbnPve5xUjOO++8cj1sR5Jsx7aehz3sYWUbhe9aZYWEnGFR/EFbcw499NDq2c9+djV37tzqtNNO650dDnJQhyiL4WywwQbVy1/+8uo5z3lOad8RRxxRArI11lijDCZXX31179sPYCXa1hczerayaI+tIdh7773LSvq3vvWtBZ7v4FRikkF7Nt100+rUU0+tLrjggvIcEDn+5z//KbNXkvE6+sMLMh7xiEeUe5I/x+C6v/zlL72rHti6YssTef7zn/8s/U3OrnfuN7/5zUjbn0wQ0ItwNvrXQH7jjTeWewRkQ3fIxr9W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tnYNkkEys7A66ZC82mrJZmwvDNrqhBfWeDGS5xltobMdz7bSQY8Y2FJpx4R7CujpoUCf3dqy55k7zye6dkkjtj3zCdoxyssAk/Fga6eX1tEnbwq302E641EYu9+8sEjSzj6MOc7Zbm1b7nR6IVOSJEsvmfyOgXjORCLi4XnJRL8AKkkGMehZpSbxLI9gQmDveeD683hNzLQrV7IQz7nY0khXvTzFtlDnpwMhg+bzO/2OeE5nmOfykyUf+u95NcmaJJd+B211Ip4bi+dpTSJ5Fq4f9LL+3GE8zxjP3PV7XnJJYtAzgsnixVZ6kzIm+qYzdj2wSTuJTASxD36aPvHTEl82siRODCVJMvPIZ36TJEmSJEmSJEmSGU8+85skSZIkSZIkSZLMeDL5TZIkSZIkSZIkSWY8mfwmSZIkSZIkSZIkM55MfpMkSZIkSZIkSZIZT77wKik/c/E/PShvMvVGU29uTGYek+pnb8196lOfWi233HLVH/7wh7G9PXpS5XbFz0J566o3uP/iF79YYt/omyRJkiRJsrQzLX/qyG+TPvOZzyzBup+zyGBzsuy0007l9y4322yzkmD4GZxk5jGpfvb7oG9729vKbwjfe++95SdmxsG4y/UTOM94xjOqNddcs/zusePhD394+WmOQay44oqlDn4T1u94+9mRxf0zZuEfV1tttermm2/unU2SJEmSJEmm4kHbngWIm2++efkR/zj8/znPeU5ZNbIKMwrK98PnyhrEWmutVR1wwAHVW97ylhLgJd2wUqW/BMltcN2yyy5bPeQhD6lWXnnl3tkln4c97GHlB/ef/exnlyRmXEyq3EkzqX5+1KMeVT30oQ8tZft7EFZPN95446KfbWhbblv4nQMPPLB697vfPf/Ydddde5/2R3L8iEc8ovytr/0W6uIm/OOcOXN6Z5IkSZIkSZI2PGjl98UvfnH11re+tZo9e3b1whe+sBxWYAStEte///3v1S233NK7ujvbbbddWX267777qp/97Ge9swtixdc9//3vf1c/+MEPyj2T9lip2n777atf/vKXrbaK2gYrwbj++uvLj+lbbZ8JPPaxj63222+/MoFjxW5cejSpcifNpPr5X//6V7X88stXf/rTn0q5g1Yjn/vc51b77rtvkd+Pf/zj3tnBtC23LRJXif+NN95YdpOYALjppptK2YO46667StLr3yuvvLK65JJLFvtOlPCP//znP6uzzz67dzZJkiRJkiSZioEvvBJYXXTRReW4+uqrSyC66aabVnvttVe1+uqr967qjoBzpZVWqpZZZpnemWTcWOGTNLTl8ssvr44++ujq05/+dPW73/2ud3bJx6qhFUMJzziZVLmTZlL97PnhT33qU9UxxxwzcEILbN8qatvdI23Lbctll11WHXXUUdWHP/zh6txzzy2TAW049dRTq49+9KPVSSedVN199929s0mSJEmSJMmSxoNeeLXjjjuWBNdqy0EHHVTOSXat2tgiKHg9/vjjq7POOqvaYIMNSpIlkG6uBj/lKU8p3/M83a233lqts846JejdaqutSllWUM4777ze1Q+s8lx77bUluLSd9OCDD67uvPPO6uMf/3jZZrrCCitU999/f3neTlBcD0Il0mussUa5XyR9AlsrW+pmBTl41rOeNb/Ortce33d/L9X5y1/+0ruyG1bFbeW20qre/o46+7/VNs8tYr311isv87Hq9Pvf/76cw5Of/ORSjhcRWbWFayWzf/zjH8vKlaTL6p3VJ/fST4jvYu+99y7Xfetb31rguc56uSALExEBmf36179eYEXQqpd+dr877rijrDpZtY/62MrqM/e5/fbbe996YHXUs5XRH+Rr5c6qG5kMi3Kf+MQnFp3Qb+pMx8gxkpmQry3zu+++ezn39a9/fYG+rcteOdpFH6JcdbTaRye0G13LhfJsU41+Izs6TP+U30RCvf7665fttuQ1jiS1TT8jdNh5k1/kIdEnC+fYXd2WQh6B68iLDILQH3pg8mzLLbcsunLyySf3rnhwfdqUG7Ttuybh56644orqgx/8YO/s/8HmwmcFsfrbpG57TfrVvYtOaE/4Nn3h/7678847F1sKH50kSZIkSZJMTavkF4LAD3zgA+V5PSshjsMOO6wEYl/96lcXCGYF8O9617vKi3XOOOOMEmBKZusBeBMJsvIlVZH8CsAvvvjissVPMCyQFPC5X33bpDfCvuIVryhbs+P5PMmWYF0CaGtqBO1HHnlkCZbPOeec8lyswFJAKfj87ne/W9rhvl0JudlCKcm0fTzqTJYmDC699NJy7aGHHlomANTti1/8YjkHSat2mBiIgNy12nX++eeXxMSkAvkKkl2nXMlffHdh1MsFWSgvUKYVLv0VSGAPP/zwIk/tkMBIVsjPdyVq99xzT+mTb3/72+U7EoGXvexl1RZbbDH/GUnytfKozfplGPTby1/+8ur5z3/+/OdX1cvOhC9/+cvzk86Q78Koy14C/+pXv3r+c9LK1UY6aVvpd77znTJx0bVcyYrn5b1oKvrNRAEdViZdaeqaNr7nPe8pCb5dF1Y+yXcU2vQzQodN1EjoyUPyKjlzjq7VXzrVlAcbmzt3bnXaaaf1zvyf/pi0GESzPm3KDdr2XZOpkt/wQXWfJWnvl2wuzPboJ30488wzy/+76oQEnM6rD98W7fOvZDmT3yRJkiRJkvY86Jlfye1GG21UnmOM58msQgnUvHXVaqaE9KqrriqJo+RHguecoAzOCwYFrV/72tdK4iMJslIpifa3lRBJi4TKIZCzqiIQlgBIeN1LYmvl1Iql+0gKVl111erCCy8s5fvbi18k2q7zUyQ33HBDCSqtyKy99trlXKxKehZWwOw8lCtZFZxLLq1AtXlOtknITbLgTawS0l/96lelzt4qa8snGQl0JYXa4d71BESAa9VLIBzPIbrW98lUPyhT/bRb+6y4S0zqiba/yVn5PgsZa5vV9UCSarUtvmMS4IILLlig/VanPP+t/lY81c21+shnURf3k6Br/6te9apqm222KWWrr/6w2kVXfFebYzKiCxIGiQDd1KfqLbEhG/2rfXjc4x5X9EgfuB+9pGt0LGRxzTXXzF9V1XevfOUri55ed911ZaVOwqmNJnd8V1ldy9Vez7fTLf3gUHdy98Ks+E4dn9kdIelSBzozavLbpp8ROiyJpJ/6mjz0nSSWPbK7IOShXLppdZcN6/PAOfeUTNN9eqQutjFH+8nb/2Plt025Qdu+axJtJYN+z/xqa/gsfoXPsIrc7xlb7Qvbi4P/0YdkaIeLZBxddIJduVZiH7ZkclBCzfYG1SdJkiRJkiTpz8DkV2AvYJV42TZppURyKPiywifwkngIzARigv4IMiXJVjesElmtkVwK4q3WCmwleAJCq1rOOTyPJ+BFJL+CbomEVWZJtM8llgJTwbKExwqrhNbfrotVYfVTd0Gl78V2xUh+1clqzIknnlgC5PjpEMFqPUFsS8hN8ie5O+WUU8ohECc/bbHyKpDumvy6VjlkdsIJJxRZ+tkV5wXFyiWnkGVMUnz+85+vvvGNb8w/32wXGda/Y2VpUPLrX8ml1Skr0dFOCa96C8gF4oJ7ya926rO4v/5QZ4mqIH6YlxdZTZaEWUH/whe+UORhtdcWeO2Pemune1phpof01HOj6h7tjQQVZAUvV6ND3//+94ueawud8HdMHLQtV4L5ute9ruiF/tJvdkHocwmgFT3X1JNJaAvZ0k/9Oo6fDWrTzwgdtqrIJtgS+yUfeimhI6OYuAh5OPyEELttJqlsj227xqonO+MrPvShD83/LvlE4os25QZt+67JVMmv+oTP4lv0txXZfslm3fYc9MPkmqRdnazgo6tOvOQlLymTSCa42JFDO8mU35XwZ/KbJEmSJEnSnoEvvJKkxs+B2B4okbRKIdCP7aWCUYfAzXZYSPIEuFZ5BH22TA6LROD0008vCZZEQxArAHWP2N4sYBSU21IrmRUYSsR++MMfluQBVo/rqFMkqJIyq0UCzFiVHgUr2l/60pdK+e5jhVxd1E8bhoWcJSPqaZIh+kBSuijQFxILq1RWufxfIC4xiBV/COzJUPIWib9AXcKk76yGWZEbBm1WpsTGpIDkRbn6kXyHRf97ARK9obve4mw1L5I8yWBXop3sQIJlEka5JpDIhm6YvKDLdcj1K1/5StmqHFtlFzUSP7pGd8lEckYW6mriaDoxib4bBSvVdiiY6Pne975XjqCrTlgJ5ttM9rA9vs01kl42mCRJkiRJknSj1duerRJ5HtZzd/VgTiAmMBPMeamNwE8gZ9XDikustg6LYK/+wqZ+uKfky2ppEwGmujUTWtcLmtV/3NjeWF/VtHp+7LHHlqP+YqSu2ApJHosL+lBfQZOk9ZO5iRCTCPSh/nuqDpMQkhF9NgwSAKu97r3bbrtVb3/726vXv/71ZWVaIjEstvRbrd5///2rQw45ZH59JTDDIkm0givh2XPPPReQg7pbFZTkkNd0w6p9v1XW6cgk+m5YrGx7Ht1kz09+8pOyal73MV11wr98lQmmJEmSJEmSZHQGJr9WGP0kiMPPg1jNtBWyiS2Mkj0rw7GVUHLjJVNWVQchUBwHgkMJVawE15H0+mxxJo1tIY9+bRgW2ycF04sakw1WpehPTJ40DxMjw0DPjjvuuPJyK5MxnvuV9Hou0pZoq2T9oAODPpNseIu537O2ekhvo55W4xbGwsq18kg3lWnrcr39cdgdMMpugCWVQTLryih9N27Y24YbblhWfe1QsBuh6Xe66oQyHU1faWWb7iVJkiRJkiTdGDmCkpBY4fXs3SabbFKe0YvnUPsRyZGkxQtdRsVqqgDRfa06CxStPPrbNkhBYv35zumArbvwYiGrQA7P0drCPQ7IWIJhVcxK06JEfwjurVTPmzevPBMbkygOb/W1DXwYrCZrk/705uFPfOIT85/X9Nxxc4U/kg26abtpvwkXiYQVaTppF4P6ehbd85US+H60KdfEj0Mio46ev/7IRz6ygCycs428jn6TRHnGdNjt4dMVekHO7N5zvOx2FIbpu0lBL/fYY4+yJdn9+z3T3lUn7CLhvzznbhWYLXv22vsQFsfEVpIkSZIkyZJOq7c9T4Vkzk+TCGi9ZMazgoO+K+mVlHpWVQAngbBq7BljSbPELV54JcnwXGkEg/HyJd+LF/YIfD0bJ0B0b8mD8nbYYYfyvKktg17QFcGoF14JJJsv0Bn0Eqq2TPUCnTrqp86SNe0VwFvBioSg3wuv2rwcK/CZN0FrZyQb7mlFPl5KJvHWDyYJfOZt2YJr8rICHf0hMSdz6Av/r/dN/D9eBuS8tmmT9ugrb7Z1D0e9n7tywAEHlD4lN20jF/2urVb6yMGW6ECC6plKv5FKd/zf3+phgkQiQv/IWJl0RL3I5aUvfWnZvq8/mrrSplzlaDdZSGLJifzVOWQR19YhH1t43V8bPcs8jKyCtv3sHoNsv589KkNfkL1ybfWNNyJL2Ni5lc+Y6IH78RNk5m+2Sh71a7uU27Xv2IsJJuXqFwmrcmzzbvaH+5tscd53/G0Lc7wEsG5L5OO9CK6xE4YuuiaOuLarTpCTiRB9BJ/vsssuxba0rYuPTpIkSZIkScaU/AqkBZ2CMomAZHPQ1lYBtEBcQCcI9PZZ2xYFjlZv3LdL8muFx/ZHyYeAV1Ji1Uz5Xj7lZTjKkARiOiS/ZERW6my1XLAvMLZdUqBfL2OY5FdSIXgnRy8iI18H+cW1Xhp14IEHlrdl+0wQ7ntW0Ov9gS7Jr8CdrL3VWRslW9HH9XKjT7tAvnTGKrkyPV8p+aUDngf2VuM6ZKqvI7GgG1EPq5DkKZGSUKmvJMdndFlipU2SsaautCkXVu5MPKijJKYuh+a1gbqM86eO2vaz/uiS/KqncrfbbrtSDr2VnEoo/Z9eSwTpcqAd5CUBpLuua17bpdyufbfvvvuW1VnXKU+5yvd/R70/JJm20ztPVmRGdnFt3Za8kXnbbbctOwCinvWjfm0XnWBLbN+hX9i8etgyTf/IM5PfJEmSJEmS9jwo+bWKIsCytbSZTAxCsiPxFDx7QZXn3QY9yyigEwBKIKyi+A1YW2TdT6AqoBW8qke8NMs5SHptdZTsqJsVK/f2+56ucQiK4+dN4m2r9ZfOCJYl6wJIyXEgWfZ9gfUw26RDbt6I3fxJoSZWgWyPlExYsXI/L8gRICvDT6VEGYPqRQ7aHj/BU0f7yT/kETKuXxsy9rnPmkf0h35yL7Lyf7Ks9038X+Ie+uK7+llwrq/i/vVy1a0rsaVa/0n66/3sRVgxwVHHi83I2epeva11eboG6qyudNjzo/G246auoE25EjB9abJDnZuy7qdrVq4lbVYPx/FTR237WX+EDjtXt/1+9hi2qE/6lUs+YaMBnSRHOqV9oRf1a7uW26Xvwpb6leuo90fYV7/rHHVb4lOsxPa7zlG/totOqGvUnTy01U4ACS8d0d56PyVJkiRJkiQLZ5lZs2aN9JsZVjusMvr9Sqs5fttV8pskSZIkSZIkSZIk04WhX3jlWULP79mWO2fOnLI10AqH7chJkiRJkiRJkiRJMp0YeuXX82cHH3xw2X5ne6GteieffPLAtzwnSZIkSZIkSZIkyeJi6OTX20p33nnnsu3Zc49WfD1nlyRJkiRJkiRJkiTTjZGf+U2SJEmSJEmSJEmS6c7Qz/wmSZIkSZIkSZIkyZJCJr9JkiRJkiRJkiTJjCeT3yRJkiRJkiRJkmTGk8lvkiRJkiRJkiRJMuPJ5DdJkiRJkiRJkiSZ8WTymyRJkiRJkiRJksx4MvlNkiRJkiRJkiRJZjyZ/CZJkiRJkiRJkiQznkx+kyRJkiRJkiRJkhlPJr9JkiRJkiRJkiTJjCeT3yRJkiRJkiRJkmTGk8lvkiRJkiRJkiRJMuPJ5DdJkiRJkiRJkiSZ8WTymyRJkiRJkiRJksx4MvlNkiRJkiRJkiRJZjyZ/CZJkiRJkiRJkiQznkx+kyRJkiRJkiRJkhlOVf1/FwDfFQnaxGIAAAAASUVORK5CYII=
代码部分如下:
from pygame import mixer
import sounddevice as sd
from comtypes import CLSCTX_ALL
from ctypes import cast, POINTER
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
class audio_manual_check():
def __init__(self,status):
self.status = status
if(status == 'step1'):
basicname = logsavepath+'\\faudio_function_before_all.wav'
afters3name = logsavepath+'\\faudio_function_after_s3.wav'
afters4name =logsavepath+'\\faudio_function_after_s4.wav'
resultfile = program_results['front audio']
manual_check_file = faudio_manual_check_file
elif(status == 'step2'):
basicname = logsavepath+'\\baudio_function_before_all.wav'
afters3name = logsavepath+'\\baudio_function_after_s3.wav'
afters4name = logsavepath+'\\baudio_function_after_s4.wav'
resultfile = program_results['back audio']
manual_check_file = baudio_manual_check_file
self.ans = False
audio_check = self.set_audio_device()
if(audio_check == False):
self.ask_window(title='提示',choosetype = 1,filename='')
else:
self.ans = True
if self.ans == True:
with open(manual_check_file,'w',encoding='utf-8')as f:
f.write('yes')
self.set_speaker_volume()
if os.path.exists(basicname):
check = True
mixer.init()
mixer.music.load(basicname)
mixer.music.play()
self.ask_window(title='Result check',choosetype = 2,filename=basicname)
if self.ans == False:
check = False
else:
check = False
if(check == False):
with open(resultfile,"w",encoding='utf-8') as f:
f.write('fail')
try:
mixer.music.stop()
pygame.quit()
return
except:
return
try:
mixer.music.stop()
except:
pass
if os.path.exists(afters3name):
check = True
mixer.music.load(afters3name)
mixer.music.play()
self.ask_window(title='Result check',choosetype = 3,filename=afters3name)
if self.ans == False:
check = False
else:
check = False
if(check == False):
with open(resultfile,"w",encoding='utf-8') as f:
f.write('fail')
try:
mixer.music.stop()
pygame.quit()
return
except:
return
if(check == True):
try:
mixer.music.stop()
except:
pass
if os.path.exists(afters4name):
check = True
mixer.music.load(afters4name)
mixer.music.play()
self.ask_window(title='Result check',choosetype = 4,filename=afters4name)
if self.ans == False:
check = False
else:
check = False
if(check == False):
with open(resultfile,"w",encoding='utf-8') as f:
f.write('fail')
try:
mixer.music.stop()
pygame.quit()
return
except:
return
else:
with open(resultfile,"w",encoding='utf-8') as f:
f.write('fail')
with open(manual_check_file,'w',encoding='utf-8')as f:
f.write('yes')
def ask_window(self,title,choosetype,filename):
self.filename = filename
self.music_check = False
self.win = tk.Tk()
self.count = 30
w,h = 400,180
# Define Color
bgcolora = '#0099CC'
bgcolorb = '#FFFFCC'
bgcolorc = '#666699'
# Add a title
self.win.title(title)
self.win.attributes('-topmost',1)
self.win.wm_geometry('')
#self.win.geometry('%sx%s'%(w,h))
self.win.geometry("+"+str(int(int(self.win.winfo_screenwidth())/2)-int(w/2))+"+"+str(int(int(self.win.winfo_screenheight())/2-int(h/2))))
# Disable resizing the GUI
self.win.resizable(0,0)
self.win.iconbitmap(iconfile)
self.win.protocol('WM_DELETE_WINDOW',self.callback) # 窗体的通信协议方法
#background color
self.win.config(background=bgcolora)#"#f4fffc")
if(choosetype == 1):
message1 = "即将测试audio声音文件"
message2 = "检测到当前无audio输入输出设备"
message3 = "请接入设备后,点击重新检测或Fail audio function"
elif(choosetype == 2):
message1 = "正在检测:Front Audio Function"
message2 = "正在播放30s的音频,剩余时间 : 30s"
message3 = "请确认是否有声音输出且声音流畅"
elif(choosetype == 3):
message1 = "正在检测:after S3"
message2 = "正在播放30s的音频,剩余时间 : 30s"
message3 = "请确认是否有声音输出且声音流畅"
elif(choosetype == 4):
message1 = "正在检测:after S4"
message2 = "正在播放30s的音频,剩余时间 : 30s"
message3 = "请确认是否有声音输出且声音流畅"
textlabel = LabelFrame(self.win,bg=bgcolorb,bd=0)
text1=tk.Label(textlabel,text=message1,bg=bgcolorb,fg='Red',font=('黑体', 16, 'bold'))
text1.pack(anchor=tk.W,pady=5)
self.text2=tk.Label(textlabel,text=message2,bg=bgcolorb,fg=bgcolorc,font=('黑体', 14))
self.text2.pack(anchor=tk.W,pady=5)
text3=tk.Label(textlabel,text=message3,bg=bgcolorb,fg=bgcolorc,font=('黑体',14))
text3.pack(anchor=tk.W,pady=5)
textlabel.pack(padx=10,pady=10,fill=BOTH)
btnlabel = LabelFrame(self.win,bd=0,background=bgcolora)
if(choosetype != 1):
pause = 25
yesbtn =tk.Button(btnlabel, text="是", relief='raised', width=6, height=1,font=("Times",12,"bold"),fg = bgcolorc,bg = bgcolorb,command=self.yes_part)
yesbtn.grid(row=0,column=0,padx=pause,sticky=N)
nobtn =tk.Button(btnlabel, text="否", relief='raised', width=6, height=1,font=("Times",12,"bold"),fg = bgcolorc,bg = bgcolorb,command=self.no_part)
nobtn.grid(row=0,column=2,padx=pause,sticky=N)
playbtn =tk.Button(btnlabel, text="重新播放", relief='raised', width=10, height=1,font=("Times",12,"bold"),fg = bgcolorc,bg = bgcolorb,command=self.replay_part)
playbtn.grid(row=0,column=1,padx=pause,sticky=N)
btnlabel.pack(padx=10,pady = 10,fill = BOTH)
self.win.after(1000,self.jian)
else:
pause = 60
yesbtn =tk.Button(btnlabel, text="重新检测", relief='raised', width=10, height=1,font=("Times",12,"bold"),fg = bgcolorc,bg = bgcolorb,command=self.detect_audio)
yesbtn.grid(row=0,column=0,padx=pause,sticky=N)
nobtn =tk.Button(btnlabel, text="Audio Fail", relief='raised', width=10, height=1,font=("Times",12,"bold"),fg = bgcolorc,bg = bgcolorb,command=self.no_part)
nobtn.grid(row=0,column=2,padx=pause,sticky=N)
btnlabel.pack(padx=10,pady = 10,fill = BOTH)
#======================
# Start GUI
#======================
self.win.mainloop()
def callback(self):
pass
def djs(self):
if(self.count > 0):
self.text2["text"]=("正在播放30s的音频,剩余时间 : %ss"%self.count)
self.s=self.win.after(1000,self.jian)
else:
self.text2["text"]=("音频播放已完成,点击重新播放")
def jian(self):
try:
self.count -= 1
except:
self.count = 29
self.djs()
def detect_audio(self):
self.win.destroy()
audio_manual_check(self.status)
def yes_part(self):
self.win.destroy()
self.ans = True
if(self.music_check == True):
try:
mixer.music.stop()
pygame.quit()
return
except:
return
def no_part(self):
self.win.destroy()
self.ans = False
if(self.music_check == True):
try:
mixer.music.stop()
pygame.quit()
return
except:
return
def replay_part(self):
mixer.init()
mixer.music.load(self.filename)
mixer.music.play()
self.music_check = True
self.count = 30
def set_audio_device(self):
alldevice = sd.query_devices()
minput,moutput,setname = None,None,None
for a in alldevice:
if('Realtek(R) Audio' in a['name']):
if('Microphone' in a['name']):
minput = a['index']
if('麦克风' in a['name']):
minput = a['index']
if('Speakers' in a['name']):
moutput = a['index']
setname = a['name']
if('扬声器' in a['name']):
moutput = a['index']
setname = a['name']
if(minput != None)and(moutput != None):
break
if(minput == None)and(moutput == None):
for a in alldevice:
if('High Definition' in a['name']):
if('Microphone' in a['name']):
minput = a['index']
if('麦克风' in a['name']):
minput = a['index']
if('Speakers' in a['name']):
moutput = a['index']
setname = a['name']
if('扬声器' in a['name']):
moutput = a['index']
setname = a['name']
if(minput != None)and(moutput != None):
break
if(minput != None)and(moutput != None):
try:
sd.default.device =
for f in (str(sd.query_devices()).split('\n')):
if('<'in f):
if(moutput in f):
print('audio output set successfully')
return True
return True
except:
print('First Set audio device fail')
print('Ready to set second time')
try:
workpath = os.getcwd()
os.chdir(workpath+'\\lib')
os.system("nircmdc setdefaultsounddevice %s" % setname)
os.chdir(workpath)
except:
print('Second Set audio device fail')
return False
else:
print('No audio device found')
return False
def set_speaker_volume(self):
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
# 判断是否静音,mute为1代表是静音,为0代表不是静音
mute = volume.GetMute()
if mute == 1:
print('Speaker当前是静音状态')
print('尝试设置Speaker为非静音状态')
setcheck = volume.SetMute(0,None)
if(setcheck == 1):
print('设置Speaker为非静音状态 - 成功')
else:
print('设置Speaker为非静音状态 - 失败')
else:
print('Speaker当前是非静音状态')
# 获取音量值,0.0代表最大,-65.25代表最小
vl = volume.GetMasterVolumeLevel()
print('当前Speaker音量值为%s' % vl)
# 获取音量范围,我的电脑经测试是(-65.25, 0.0, 0.03125),第一个应该代表最小值,第二个代表最大值,第三个不知道是干嘛的。也就是音量从大到小是0.0到-65.25这个范围
try:
vr = volume.GetVolumeRange()
print('当前Speaker音量值为%s' % str(vr))
except:
vr = (-65.25, 0.0, 0.03125)
print('使用默认的Speaker音量值为%s' % str(vr))
# 设置音量, 比如-13.6代表音量是40,0.0代表音量是100
volume.SetMasterVolumeLevel(vr, None)
print('已设置Speaker音量为100%')
报错信息呢? 从你的描述和代码中,我可以看出你希望在用户选择“是”或“否”之前强制停止音频播放。
在这种情况下,你可以使用 threading 模块将音频播放移动到单独的线程,然后在需要的时候停止它。
这是一个修改后的代码示例,其中使用了 threading 模块。
首先,将以下导入添加到代码的顶部:
import threading
然后,修改 replay_part 方法,将音频播放移动到单独的线程:
def replay_part(self):
def play_audio():
mixer.init()
mixer.music.load(self.filename)
mixer.music.play()
self.music_check = True
self.count = 30
self.audio_thread = threading.Thread(target=play_audio)
self.audio_thread.start()
最后,在 yes_part 和 no_part 方法中,在尝试停止音频播放之前,确保先加入音频线程:
def yes_part(self):
self.win.destroy()
self.ans = True
if self.music_check:
try:
self.audio_thread.join()
mixer.music.stop()
pygame.quit()
return
except:
return
def no_part(self):
self.win.destroy()
self.ans = False
if self.music_check:
try:
self.audio_thread.join()
mixer.music.stop()
pygame.quit()
return
except:
return
这样,当用户选择“是”或“否”时,将确保音频播放线程结束,从而避免可能的错误。这是一个简单的修改,希望对你有所帮助! 报错信息是图片没有显示出来,
我找不到放置图片的位置
报错信息如下:
Fatal Python error:pygame_parachute:(pygame parachute) Segmentation Fault 鸩为茗 发表于 2023-3-27 13:59
报错信息是图片没有显示出来,
我找不到放置图片的位置
报错信息如下:
还有一行:Python runtime state :initialized isdkz 发表于 2023-3-27 11:06
从你的描述和代码中,我可以看出你希望在用户选择“是”或“否”之前强制停止音频播放。
在这种情况下, ...
改为线程后仍有同样的报错,报错内容我会贴在新楼层 改为线程后的报错信息如下:
Fatal Python error: (pygame parachute) Segmentation Fault
Python runtime state: initialized
Thread 0x00001e9c (most recent call first):
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 306 in wait
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 558 in wait
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\pydevd.py", line 261 in _on_run
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_daemon_thread.py", line 49 in run
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932 in _bootstrap_inner
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890 in _bootstrap
Thread 0x00004c18 (most recent call first):
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 306 in wait
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 558 in wait
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\pydevd.py", line 215 in _on_run
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_daemon_thread.py", line 49 in run
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932 in _bootstrap_inner
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890 in _bootstrap
Thread 0x00002518 (most recent call first):
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 302 in wait
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 558 in wait
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_timeout.py", line 43 in _on_run
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_daemon_thread.py", line 49 in run
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932 in _bootstrap_inner
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890 in _bootstrap
Thread 0x00004e48 (most recent call first):
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 204 in _read_line
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 222 in _on_run
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_daemon_thread.py", line 49 in run
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932 in _bootstrap_inner
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890 in _bootstrap
Thread 0x00004a18 (most recent call first):
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 306 in wait
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\queue.py", line 179 in get
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_comm.py", line 367 in _on_run
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_daemon_thread.py", line 49 in run
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 932 in _bootstrap_inner
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\threading.py", line 890 in _bootstrap
Current thread 0x00002ef4 (most recent call first):
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\site-packages\comtypes\__init__.py", line 1212 in Release
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\site-packages\comtypes\__init__.py", line 957 in __del__
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 2574
in destroy
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 2574
in destroy
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 2302
in destroy
File "d:\files\auto-sample-test-v2\bin\Extras\prepare.py", line 2837 in yes_part
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883
in __call__
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1420
in mainloop
File "d:\files\auto-sample-test-v2\bin\Extras\prepare.py", line 2807 in ask_window
File "d:\files\auto-sample-test-v2\bin\Extras\prepare.py", line 2695 in __init__
File "d:\files\auto-sample-test-v2\bin\Extras\prepare.py", line 3165 in <module>
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 124 in _run_code
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 135 in _run_module_code
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 321 in run_path
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 284 in run_file
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy/..\debugpy\server\cli.py", line 430 in main
File "c:\Users\Iris\.vscode\extensions\ms-python.python-2022.16.1\pythonFiles\lib\python\debugpy\adapter/../..\debugpy\launcher/../..\debugpy\__main__.py", line 39 in <module>
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85 in _run_code
File "C:\Users\Iris\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192 in _run_module_as_main
页:
[1]