Python | Introduction to PyQt5 - GeeksforGeeks

26 May, 2019
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
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’.
>>> 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]
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.
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 sysfrom 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_())
Python-gui
Python-PyQt
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Python Dictionary
Read a file line by line in Python
How to Install PIP on Windows ?
Different ways to create Pandas Dataframe
Python String | replace()
Python program to convert a list to string
Reading and Writing to text files in Python
Create a Pandas DataFrame from Lists
sum() function in Python
How to drop one or multiple columns in Pandas Dataframe