Python | Introduction to PyQt5

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 –

filter_none

edit
close

play_arrow

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

chevron_right




My Personal Notes arrow_drop_up


If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.