-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_()
私の答えをお試しくださいこれが正しいとマークするのを忘れることができない場合は、次のリンクを確認してください:[ツアー] – eyllanesc
'あなたのコードは正しいと思います。次に 'run()'メソッドで 'while 1:getcpu_and_emit'を実行しますが、これは良い考えではありません。あなたは別のスレッドでも、while-True-opはcpu-costingだからです。 「タイマーを使って情報を更新するのが良いアイデアだと思う」私の答えを見てください。 – Silencer
両方の回答がここのソリューションの半分であると思われ、マージする必要があります。またはeyllanesc .. 'self.setupUi(self)'に問題の適切なプログレスバーがありますか? – ZF007