es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar un punto flotante en un número de LCD para Qt?

En Qt Designer intento agregar un número decimal entre los dígitos, como 19.44, pero no he encontrado ninguna funcionalidad para hacerlo. Para hacer esto, he escrito un código simple que se muestra a continuación:

Esto es lo que quiero hacer:

lcd display of Temperature 19.44

Quiero mostrar un valor de temperatura. Para esto, intenté escribir float(8.8) y aproximarlo a 9. Quiero mostrarlo como 8.8. Aquí está mi archivo .py.

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(469, 360)
        Dialog.setStyleSheet("")
        Dialog.setSizeGripEnabled(False)
        Dialog.setModal(False)
        self.lcdNumber_2 = QtWidgets.QLCDNumber(Dialog)
        self.lcdNumber_2.setGeometry(QtCore.QRect(140, 60, 191, 161))
        self.lcdNumber_2.setStyleSheet("color: rgb(0, 0, 0);")
        self.lcdNumber_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.lcdNumber_2.setSmallDecimalPoint(True)
        self.lcdNumber_2.setDigitCount(2)
        self.lcdNumber_2.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
        self.lcdNumber_2.setProperty("intValue", 88)
        self.lcdNumber_2.setObjectName("lcdNumber_2")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Salida:

lcd display of '9'

¿Cómo se puede agregar un punto en él? ¿Existe alguna forma de hacerlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar un punto flotante en la pantalla LCD, necesitas establecer las propiedades smallDecimalPoint y digitCount del widget QLCDNumber.

    Primero, cambia la propiedad digitCount a 3 para acomodar el punto decimal. Luego, establece smallDecimalPoint en False para mostrar un punto decimal más grande.

    Aquí está el código modificado:

    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_Dialog(object):
        def setupUi(self, Dialog):
            Dialog.setObjectName("Dialog")
            Dialog.resize(469, 360)
            Dialog.setStyleSheet("")
            Dialog.setSizeGripEnabled(False)
            Dialog.setModal(False)
            self.lcdNumber_2 = QtWidgets.QLCDNumber(Dialog)
            self.lcdNumber_2.setGeometry(QtCore.QRect(140, 60, 191, 161))
            self.lcdNumber_2.setStyleSheet("color: rgb(0, 0, 0);")
            self.lcdNumber_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
            self.lcdNumber_2.setSmallDecimalPoint(False)
            self.lcdNumber_2.setDigitCount(3)
            self.lcdNumber_2.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
            self.lcdNumber_2.setProperty("intValue", int(19.44 * 10))
            self.lcdNumber_2.setObjectName("lcdNumber_2")
    
            self.retranslateUi(Dialog)
            QtCore.QMetaObject.connectSlotsByName(Dialog)
    
        def retranslateUi(self, Dialog):
            _translate = QtCore.QCoreApplication.translate
            Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
    
    
    if __name__ == "__main__":
        import sys
        app = QtWidgets.QApplication(sys.argv)
        Dialog = QtWidgets.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(Dialog)
        Dialog.show()
        sys.exit(app.exec_())
    

    Ten en cuenta que la PropertyValue se establece en int(19.44 * 10) en lugar de float(19.44) para evitar errores de redondeo de punto flotante.

    La salida debería verse así:

    Salida

Comments are closed.