Displaying numbers with QLCDNumber.display() with PyQt5



  • I am bit new to Qt and python. I have created a simple GUI which consist of a simple calculator. I used the QT Designer to design the GUI and now I want to link my buttons to the QLCDNumber display.

    I created a *.clicked.connect(self.my_func) to link it but only the print statement is working well when clicking the button.

    from PyQt5 import QtCore, QtGui, QtWidgets

    class Ui_Dialog(object):
    def setupUi(self, Dialog):
    Dialog.setObjectName("Dialog")
    self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
    self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 80, 164, 134))
    self.gridLayoutWidget.setObjectName("gridLayoutWidget")
    self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
    self.gridLayout.setContentsMargins(0, 0, 0, 0)
    self.gridLayout.setObjectName("gridLayout")

        self.pushButton_9 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_9.setObjectName("pushButton_9")
        self.gridLayout.addWidget(self.pushButton_9, 0, 2, 1, 1)
        self.pushButton_9.clicked.connect(self.my_func)
    
        self.pushButton_5 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.gridLayout.addWidget(self.pushButton_5, 1, 1, 1, 1)
        self.pushButton_7 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_7.setObjectName("pushButton_7")
        self.gridLayout.addWidget(self.pushButton_7, 0, 0, 1, 1)
        self.pushButton_6 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_6.setObjectName("pushButton_6")
        self.gridLayout.addWidget(self.pushButton_6, 1, 2, 1, 1)
        self.pushButton_8 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_8.setObjectName("pushButton_8")
        self.gridLayout.addWidget(self.pushButton_8, 0, 1, 1, 1)
        self.pushButton_4 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 1, 0, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 2, 2, 1, 1)
        self.pushButton_0 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_0.setObjectName("pushButton_0")
        self.gridLayout.addWidget(self.pushButton_0, 3, 0, 1, 3)
        self.pushButton_2 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 2, 1, 1, 1)
        self.pushButton_1 = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.pushButton_1.setObjectName("pushButton_1")
        self.gridLayout.addWidget(self.pushButton_1, 2, 0, 1, 1)
        self.pushButton_6.raise_()
        self.pushButton_5.raise_()
        self.pushButton_4.raise_()
        self.pushButton_1.raise_()
        self.pushButton_2.raise_()
        self.pushButton_3.raise_()
        self.pushButton_8.raise_()
        self.pushButton_9.raise_()
        self.pushButton_0.raise_()
        self.pushButton_7.raise_()
    
        self.lcdNumber = QtWidgets.QLCDNumber(Dialog)
        self.lcdNumber.setGeometry(QtCore.QRect(20, 10, 221, 61))
        self.lcdNumber.setObjectName("lcdNumber")
    
        self.gridLayoutWidget_2 = QtWidgets.QWidget(Dialog)
        self.gridLayoutWidget_2.setGeometry(QtCore.QRect(190, 80, 51, 134))
        self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
        self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.pushButton_10 = QtWidgets.QPushButton(self.gridLayoutWidget_2)
        self.pushButton_10.setObjectName("pushButton_10")
        self.gridLayout_2.addWidget(self.pushButton_10, 2, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.gridLayoutWidget_2)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout_2.addWidget(self.pushButton, 1, 0, 1, 1)
        self.pushButton_11 = QtWidgets.QPushButton(self.gridLayoutWidget_2)
        self.pushButton_11.setObjectName("pushButton_11")
        self.gridLayout_2.addWidget(self.pushButton_11, 3, 0, 1, 1)
        self.pushButton_12 = QtWidgets.QPushButton(self.gridLayoutWidget_2)
        self.pushButton_12.setObjectName("pushButton_12")
        self.gridLayout_2.addWidget(self.pushButton_12, 0, 0, 1, 1)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(20, 230, 60, 16))
        self.label.setObjectName("label")
    
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
    
    
    def my_func(self):
        print("Works")
        self.lcdNumber.display(9)
    
    
    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton_9.setText(_translate("Dialog", "9"))
        self.pushButton_5.setText(_translate("Dialog", "5"))
        self.pushButton_7.setText(_translate("Dialog", "7"))
        self.pushButton_6.setText(_translate("Dialog", "6"))
        self.pushButton_8.setText(_translate("Dialog", "8"))
        self.pushButton_4.setText(_translate("Dialog", "4"))
        self.pushButton_3.setText(_translate("Dialog", "3"))
        self.pushButton_0.setText(_translate("Dialog", "0"))
        self.pushButton_2.setText(_translate("Dialog", "2"))
        self.pushButton_1.setText(_translate("Dialog", "1"))
        self.pushButton_10.setText(_translate("Dialog", "-"))
        self.pushButton.setText(_translate("Dialog", "+"))
        self.pushButton_11.setText(_translate("Dialog", "="))
        self.pushButton_12.setText(_translate("Dialog", "DEL"))
        self.label.setText(_translate("Dialog", "TextLabel"))
    

    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_())


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    What version of Python and PyQt are you using ?

    Just tested here and clicking on the button 9 shows the number 9 on the LCD widget.



  • @SGaist said in Displaying numbers with QLCDNumber.display() with PyQt5:

    ed here and click

    Hey thanks for the fast reply ;)

    I'm using Python 3.6.3 and PyQt5 (5.11.2)

    The problem i found now is that

    self.lcdNumber.display(9)
    

    doesn't display the number on the display for some unknown reason. I found a workaround with repaint:

    self.lcdNumber.display(9)
    self.lcdNumber.repaint()
    

    Now it works. Maybe a reason for this is that I'm using macOs instead of windows. QT sometimes has different solutions for macOs as far as i can say.


  • Lifetime Qt Champion

    How did you install PyQt5 ?

    It should not make a difference in this case. Note that I also tested on macOS.




  • Lifetime Qt Champion

    What version of macOS are you using ?

    Did you build PyQt5 yourself ? If so, how did you install Qt ?

    In any case, can you try the version coming from pip ?



  • @SGaist

    macOs High Sierra (10.13.6)

    I installed via pip (pip3)

    maett@Matthiass-MacBook-Pro-2:~/PyQt$ pip install pyqt5
    Requirement already satisfied: pyqt5 in /Users/maett/anaconda3/lib/python3.6/site-packages (5.11.2)
    Requirement already satisfied: PyQt5_sip<4.20,>=4.19.11 in /Users/maett/anaconda3/lib/python3.6/site-packages (from pyqt5) (4.19.12)
    

    Why are there differences between a Windows menu bar and a macOS one to program?
    I thought QT should be system independent?
    Do u know good tutorials combining Qt with OpenCV?


  • Lifetime Qt Champion

    Except that you have the conda version of the package installed... So right know, which version are you using ?

    Because both OS does thing differently. Qt goal has always been to provide you with a common code base that behaves according to the OS your application is running on. You can find more information about that in QMenuBar's documentation.

    You can check that small introduction for OpenCV and Qt



  • @SGaist
    Im not sure if i get the question. I've installed python (3.6.3) via conda and downloaded pyqt5 & sip from riverbank.
    After installation i checked if it is installed via

    pip install pyqt5
    

    Are there any problems with the conda version of python and Qt? '

    Thank u soooo much for the links :)


  • Lifetime Qt Champion

    Since you're using conda, try installing the version that is provided through conda, that will make your environment more coherent.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.