Skip to content
Related Articles

Related Articles

Python | Introduction to PyQt5

View Discussion
Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 26 May, 2019
View Discussion
Improve Article
Save Article

There are so many options provided by Python to develop GUI application and PyQt5 is one of them. PyQt5 is cross-platform GUI toolkit, a set of python bindings for Qt v5. One can develop an interactive desktop application with so much ease because of the tools and simplicity provided by this library.

A GUI application consists of Front-end and Back-end. PyQt5 has provided a tool called ‘QtDesigner’ to design the front-end by drag and drop method so that development can become faster and one can give more time on back-end stuff.

Installation:

First, we need to install PyQt5 library. For this, type the following command in the terminal or command prompt:

pip install pyqt5

If successfully installed one can verify it by running the code:

>>>import PyQt5

PyQt5 provides lots of tools and QtDesigner is one of them. For this run this command:

pip install PyQt5-tools

Create your first app –

This is a simple app having a single button in the window. After clicking that button a message will appear “You clicked me”. Let’s start.

  • First of all, we need to find QtDesigner to create the front-end part.
    – QtDesigner is present at ‘site-packages/pyqt5_tools’
    – For finding the location of site-packages write the following python code using any editor of your choice and then run:

    >>> import site
    >>> site.getsitepackages()

    – Run the application named ‘designer’.

  • A window will open as shown in the figure:

    select the ‘Dialog without Button’ option and click ‘Create’
  • At the left side of the designer there will be various widgets which can be dragged and dropped in our window according to our requirement.
  • Find and drag-and-drop ‘Push Button’ and ‘Label’.
  • Change the text inside the widgets by right clicking it and selecting ‘Change plain text’. Keep the text of the Label blank.
  • We have created our front-end layout, just save it at your desired location.Remember, this file will have .ui as extension.
  • We need to convert the .ui file into .py file to get the python form of the widgets and attach necessary event listeners to them.

    Converting .ui file into .py file:

    For this we have to go to sitpackages directory in terminal or command prompt and run the command as shown below. Getting the location of sitepackages is mentioned previously.

    >>> cd “C:\\Users\\……\\Programs\\Python\\Python36-32\\lib\\site-packages” [Location of sitepackages]

    >>> pyuic5 “C:\Users\……\FILENAME.ui”[Exact location of .ui file] -o ” C:\Users\…….\FILENAME.py” [Location where want to put .py file]

  • Finally we will add signals and slot in the python code to make it fully functional.
    widget.signal.connect(slot)

    A signal is emitted by widgets after the occurrence of a certain kind of event like a click, Double click, etc.
    A slot is any callable function which will perform some action after the occurrence of an event.

  • Run the app and click the button.

Below is the code –




import sys
from PyQt5 import QtCore, QtGui, QtWidgets
  
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
  
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(150, 70, 93, 28))
  
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(130, 149, 151, 31))
        self.label.setText("")
  
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)
         
        # adding signal and slot
        self.pushButton.clicked.connect(self.showmsg) 
  
    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "Click"))
          
    def showmsg(self):
        # slot
        self.label.setText("You clicked me")
  
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
  
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_Dialog()
  
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!