-1
나는 멀티 스레딩을 처음 접했습니다. 사용하는 비디오 파일은 정상적으로 작동하며 시작시 진행률 표시 줄에 진행률 막대가 표시됩니다. 예를 들어 현재 CPU 사용 값과 같이 진행률 막대 값을 계속 변경하려면 코드를 실행할 때 아래 코드가 계속 충돌합니다. 코드가 작동하지 않는 이유는 무엇입니까 ??PyQt5 - 멀티 스레딩 설정 (Qthread)에서 progresssbar를 업데이트하는 동안 gui 충돌을 방지하는 방법은 무엇입니까?
저는 문제가 방출되어 연결된다고 생각합니다. 그렇다면 무엇을 할 수 있습니까? 어떻게 수정해야합니까? 도움에 미리 감사드립니다.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QObject, pyqtSignal
import sysinfo
from multi import Ui_Form
class main(QtWidgets.QWidget ,Ui_Form):
cpu_value = pyqtSignal()
def __init__(self, parent = None):
super(main,self).__init__(parent)
self.setupUi(self)
self.threadclass = ThreadClass()
self.threadclass.start()
self.cpu_value.connect(self.updateProgressBar)
def updateProgressBar(self):
val = sysinfo.getCPU()
self.progressBar.setValue(val)
class ThreadClass(QtCore.QThread):
def __init__(self, parent = None):
super(ThreadClass,self).__init__(parent)
def run(self):
while 1:
val = sysinfo.getCPU()
self.cpu_value.emit(val)
if __name__ == '__main__':
a = QtWidgets.QApplication(sys.argv)
app = main()
app.show()
a.exec_()
내 대답하십시오 : python3.5 + pyqt5.9는
는 그와 같은 CPU 정보를 업데이트하기 위해 타이머를 사용 , 그리고 이것이 도움이된다면 올바른 것으로 표시하는 것을 잊지 말고, 어떻게해야할지 모르는 경우 다음 링크를 확인하십시오 : [둘러보기] – eyllanesc
'네 코드가 맞을 것 같아 .' 그리고'run()'메소드에서'while 1 : getcpu_and_emit'을 수행합니다. 이것은 좋은 생각이 아닙니다. 'while-True-op는 cpu-costing'이기 때문에 다른 스레드에서도 수행합니다. '타이머를 사용하여 정보를 업데이트하는 것이 더 좋은 생각입니다. ' 내 대답을 보라. – Silencer
두 답변이 모두 솔루션의 절반 인 것처럼 보이며 병합해야합니다. 맞습니까? 아니면 eyllanesc ..'self.setupUi (self)'안에 문제의 적절한 진행 표시 줄이 있다고 제안 하시겠습니까? – ZF007