Python - Ayuda con PyQt5

 
Vista:
sin imagen de perfil

Ayuda con PyQt5

Publicado por Roberto (3 intervenciones) el 26/10/2021 00:13:12
Hola, tengo una tarea escolar para desarrollar un código python, que permite visualizar los diferentes valores de un potenciómetro conectado a un arduino, mi código solo permite visualizar un solo valor, aunque mueva el potenciómetro los valores no se actualizan, para actualizar el valor tengo que reiniciar mi código, alguien podría ayudarme a corregir esto por favor, se lo agradecería mucho. Nota: Los valores del arduino se están leyendo correctamente, ya lo verifique en el monitor serie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from PyQt5 import uic,QtWidgets
import serial
import time
 
app=QtWidgets.QApplication([])
 
ser=serial.Serial("COM8",9600)
time.sleep(2)
 
while True:
    value=ser.readline().decode('utf-8')
    print(value)
    screen=uic.loadUi(r"C:\Users\romer\LDWS\VELOCIMETRO_BATERIA\DIGITAL.ui")
    screen.lcdNumber.display(value)
    screen.show()
    app.exec()
 
 
ser.close()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda con PyQt5

Publicado por tincopasan (1082 intervenciones) el 26/10/2021 16:24:48
supongo que estás iniciando con pyqt, no todo funcionará de una forma tan simple como este código que intentas usar. consejos:
1) No te acostumbres a usar designer y sus archivos *.ui, es mejor pasarlos a *.py y es todavía mucho mejor hacerlos por tu cuenta, aunque es cierto que es más lerdo.
2)Sleep del módulo time causa conflictos, pyqt trae su propio manejador para ello.
3)los bucles como tales no se pueden manejar tan fácil como lo estás intentando(aunque desconozco todas las posibilidades de pyqt)
4) sin intentar modificar demasiado tu código le haré unos cambios, pero no sé si funcionarán correctamente ya que no los probaré.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from PyQt5 import uic,QtWidgets
from PyQt5 import QtCore
import serial
 
 
app=QtWidgets.QApplication([])
ser=serial.Serial("COM8",9600)
 
 
def valores(x):
    x=ser.readline().decode('utf-8')
    screen.lcdNumber.display(x)
    QtCore.QTimer.singleShot(2000, lambda:valores(x))
 
 
value=ser.readline().decode('utf-8')
valores(value)
screen=uic.loadUi(r"C:\Users\romer\LDWS\VELOCIMETRO_BATERIA\DIGITAL.ui")
screen.show()
app.exec_()
ser.close()

ësta es la peor forma de hacerlo para mí, pero mejorarlo implicaría no usar *.ui y el uso de clases lo cual ya hace totalmente diferente este código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar