シリアルで値を取り込み、それらの値でGuiを更新しようとしているときに問題が発生しています。残念ながら、値が正しく更新されても、私はそれをクリックしてから戻ってこない限り、画面を更新することができません。私は、repaint、update、processEvents()を試みましたが、問題を解決することができませんでした。PyQt5 GUIは、画面をクリックして戻したときにのみ更新されます。
import sys
import serial
import time
import requests
import PyQt5
from PyQt5.QtWidgets import *
from PyQt5.QtCore import*
from PyQt5.QtGui import *
import mainwindow_auto
CUSTOM_EVENT = 1000
ser = serial.Serial('/dev/ttyACM0', 9600)
class TestThread(QThread):
def __init__(self, target):
QThread.__init__(self)
self.target = target
def run(self):
while True:
QApplication.postEvent(self.target, QEvent(QEvent.Type(CUSTOM_EVENT)))
QApplication.processEvents()
QThread.sleep(15)
class MainWindow(QMainWindow, mainwindow_auto.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)# gets defined in the UI file
self.thread = TestThread(self)
self.thread.start()
def event(s, e):
if(e.type() == CUSTOM_EVENT):
print("Readline: ",int(ser.readline()))
SOC = int(ser.readline())
s.lcdNumber.display(SOC)
s.progressBar.setValue(SOC)
print("SOC: ",SOC)
print(s.lcdNumber.value())
return True
def main():
app = QApplication(sys.argv)
form = MainWindow()
form.lcdNumber.display(30)
form.progressBar.setValue(30)
form.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
事前に感謝します:ここで
は、私が働いているコードがあります!
こんにちはケビン!早速の対応、ありがとうございました!私はあなたが提案したルートに行きましたが、多くのデバッグ(PyQtを使って初めて)で終了しました。私は画面を隠して再描画することで力の再描画で解決しました。ベストプラクティスではないかもしれないが、それまでは安定していた。あなたの助けをもう一度ありがとう! –