2
스레드를 필요로하는 함수가 있습니다.이 함수에는 QThread
을 사용하고 있는데,이 함수에는 win32com
호출이 있지만, 그들은 AttributeError
을 발생시킵니다.AttributeError - QThread and Win32com
왜 그런 일이 벌어지며 해결할 수 있습니까? 나는이 스크립트를 실행하고 버튼을 클릭하면이 AttributeError 제기
class MyThread(QtCore.QThread):
def __init__(self):
super(MyThread, self).__init__()
def run(self):
FB2K = foobar()
while True:
CurrentVolume = float(FB2K.currentVolumeLevel().strip('dB'))
FB2K.setVolumeLevel(CurrentVolume - 0.1)
sleep(1)
class MainFrame(QWidget):
def __init__(self):
QWidget.__init__(self)
self.button = QPushButton(self)
self.thread = MyThread()
self.button.clicked.connect(self.my_function)
def my_function(self):
self.thread.start()
: 여기
가 일부 코드의Traceback (most recent call last):
File "C:/My Python Programs/foobar_acess.py", line 18, in run
CurrentVolume = float(FB2K.currentVolumeLevel().strip('dB'))
File "C:\Python27\pyfoobar.py", line 50, in currentVolumeLevel
return str(playback.Settings.Volume) + "dB"
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 516, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.Settings
pyfoobar이 볼륨을 설정할 수 있습니다 foobar2000에 액세스하려면 모듈을 캐치 노래 이름 등
win32com 모듈 주위에 빌드, 재생 (오류 제기 하나)입니다 :
playback = win32com.client.Dispatch("Foobar2000.Application.0.7")
QThread에서 실행하지 않으면 코드가 잘 작동하지만 while 루프 때문에 UI가 정지됩니다.