私はPythonとPyQtが初めてです。プログラムを起動すると、数秒後にプログレスバーとラベルが消えます。進行状況バーは、マウスが進行状況バーの上を移動すると表示され、表示されなくなります(ラベルは消えています)。もう一度表示されると消えます。しかし、私がプログレスバー値を設定した行にコメントすると、ラベルは消えません。ここでPyQt:プログレスバーとラベルが消える
は、コードは次のとおりです。私がやろうとしています
from PyQt4 import QtCore, QtGui, Qt
from PyQt4.Qt import QDialog, QApplication
import sys
import sensors
from sensors import *
import threading
class tmp():
def main(self):
global test
global name
sensors.init()
try:
for chip in sensors.iter_detected_chips():
#print (chip)
#print('Adapter:', chip.adapter_name)
for feature in chip:
if feature.label == 'Physical id 0':
test = feature.get_value()
name = feature.label
#print ('%s (%r): %.1f' % (feature.name, feature.label, feature.get_value()))
threading.Timer(5.0, self.main).start()
return test
print
finally:
sensors.cleanup()
zz = tmp()
zz.main()
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setGeometry(50, 50, 250, 150)
self.setWindowTitle("Title here")
#lay = QtGui.QVBoxLayout()
#lay.addWidget(self.prgB)
#lay.addWidget(self.lbl)
#self.setLayout(lay)
self.home()
def home(self):
self.prgB = QtGui.QProgressBar(self)
self.prgB.setGeometry(20, 20, 210, 20)
self.lbl = QtGui.QLabel(self)
self.lbl.setGeometry(20, 40, 210, 20)
lay = QtGui.QVBoxLayout()
lay.addWidget(self.prgB)
lay.addWidget(self.lbl)
self.setLayout(lay)
self.update()
def update(self):
textas = ('%s : %.1f' % (name, test))
self.lbl.setText(str(textas))
self.prgB.setValue(test)
threading.Timer(5.0, self.update).start()
QtGui.QApplication.processEvents()
self.show()
def run():
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads)
app = QtGui.QApplication(sys.argv)
GUI = MainWindow()
sys.exit(app.exec_())
run()
何ちょうど一時値(pysensors)を取得し、ラベルのテキストと、プログレスバーの値にそれを渡しています。私の言ったように動作していますが、数秒後にラベルが消えてプログレスバーが消えます。 更新機能に問題があることは知っています(または推測します)。私は何が間違っているか分かりません。
ありがとうございました!今それは魅力的に働いています:) –