Python - a high-level general purpose programming language, focused on improving developer productivity and code readability. And also widely used for writing Web-based applications. But to work with Qt for Python was developed Library PyQt5 by Riverbank Computing, which is a set of "anchors" to Qt5 library.
Out of interest, I decided to write a small Hello World using PyQt5.
Installing
First install Python, in my case it is Python 3.5.2.
For Windows, you can download the installation package from the official Python website. For Linux, we can use the standard package manager.
Next, you need to install PyQt5. In the case of Linux can be installed using either a standard package manager. For example, for deb-based distributions:
sudo apt-get install python python3-pyqt5 pyqt5-dev-tools
Either install the first pip utility to install Python packages:
sudo apt-get install python-pip
And to install with the help of this tool, which will be similar for Windows, and for Linux systems:
pip install PyQt5
IDE PyCharm has been chosen to develop in Python.
Hello World
Now write a small program to PyQt5, which will run the application window with the words and have one menu item in the menu bar. By clicking on the item will close the application.
Full text of program
from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget, qApp, QAction from PyQt5.QtCore import QSize # Inherit from QMainWindow class MainWindow(QMainWindow): # override the class constructor def __init__(self): # Invoke the method of super class QMainWindow.__init__(self) self.setMinimumSize(QSize(480, 320)) # Set sizes self.setWindowTitle("Hello world!!!") # Set title of window central_widget = QWidget(self) # Create a central widget self.setCentralWidget(central_widget) # Set the central widget grid_layout = QGridLayout(self) # Create a QGridLayout central_widget.setLayout(grid_layout) # Set Layout to central widget title = QLabel("Hello World on the PyQt5", self) # Create a label title.setAlignment(QtCore.Qt.AlignCenter) # Set alignment of text grid_layout.addWidget(title, 0, 0) # and add it to layout exit_action = QAction("&Exit", self) exit_action.setShortcut('Ctrl+Q') # Connect the signal triggered in the slot quit qApp. # Signals and Slots syntax PyQt5 is markedly different from the one used Qt5 C ++ exit_action.triggered.connect(qApp.quit) # Set in the menu bar Action. file_menu = self.menuBar() file_menu.addAction(exit_action) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) mw = MainWindow() mw.show() sys.exit(app.exec())
Differences
if name == " main ":
In a Python applications can often find the following construction:
if __name__ == "__main__":
Since you can specify the Python-script, a program code using this design to perform in the event that it runs as a standalone application. In case, if the script will be imported into another script, the code that will follow this structure will not be called.
Syntax of signals and slots
In PyQt5 use the following syntax signals and slots as shown in the example QAction use.
exit_action = QAction("&Exit", self) # Создаём Action с помощью которого будем выходить из приложения exit_action.triggered.connect(qApp.quit)
While in Qt C ++ the same thing would look like this:
QAction *exit = new QAction("&Exit", this); connect(exit, &QAction::triggered, qApp, &QApplication::quit);
Python
Perhaps the most obvious;-)
Here without comment.
Conclusion
The result is a program similar to the following.
Отлично получилось. Работает. Спс
ImportError: cannot import name 'QtCore' from 'PyQt5' (unknown location)