{"id":329338,"date":"2022-02-09T21:00:08","date_gmt":"2022-02-09T21:00:08","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=329338"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=329338","title":{"rendered":"<span>PyQt6 \u2014 \u043f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"620\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bfb\/17d\/044\/bfb17d044f95d6b449ac56cfebc0c847.png\" data-width=\"848\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/599599\/\">\u043f\u0435\u0440\u0432\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 <\/a>\u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445, \u0441\u043b\u043e\u0442\u0430\u0445 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u0445. \u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043a\u0443\u0440\u0441\u0430 \u043f\u043e <a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=lead\">Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 Python<\/a>, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u2014 \u043e \u043c\u0430\u043a\u0435\u0442\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0430\u043d\u0435\u043b\u044f\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 QAction, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043d\u0430\u0445. \u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a1\">\u041c\u0430\u043a\u0435\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a2\">\u041f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u0435\u043d\u044e \u0438 QAction<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a3\">\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0438 \u043e\u043a\u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a4\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430<\/a><\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p><a class=\"anchor\" name=\"a1\" id=\"a1\"><\/a><\/p>\n<h2>\u041c\u0430\u043a\u0435\u0442\u044b<\/h2>\n<p>\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u043a\u043d\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442. \u041d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 Qt \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f <em>\u043c\u0430\u043a\u0435\u0442\u044b<\/em>. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b 4 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u041a\u043b\u0430\u0441\u0441 \u043c\u0430\u043a\u0435\u0442\u0430<\/p>\n<\/th>\n<th>\n<p>\u0422\u0438\u043f \u043c\u0430\u043a\u0435\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p><code>QHBoxLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QVBoxLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QGridLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0441\u0435\u0442\u043a\u0430 X \u043d\u0430 Y<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QStackedLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0423\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u043f\u043e \u043e\u0441\u0438 Z \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 <a href=\"https:\/\/www.pythonguis.com\/tutorials\/qt-designer-gui-layout\/\">\u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c <\/a>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Qt designer. \u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<\/p>\n<\/blockquote>\n<p>\u0412 Qt \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043c\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432: VBoxLayout, QHBoxLayout \u0438 QGridLayout. \u0418 \u0435\u0441\u0442\u044c  QStackedLayout, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043e\u0434\u0438\u043d \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u0430\u043a\u0435\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b\u0435 app.py:<\/p>\n<pre><code class=\"python\">import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget from PyQt6.QtGui import QPalette, QColor  class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u0430\u043a\u0435\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u0446\u0432\u0435\u0442. \u0422\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0432 \u043c\u0430\u043a\u0435\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u041d\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<pre><code class=\"python\">class Color(QWidget):      def __init__(self, color):         super(Color, self).__init__()         self.setAutoFillBackground(True)          palette = self.palette()         palette.setColor(QPalette.ColorRole.Window, QColor(color))         self.setPalette(palette)<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 QWidget \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 Color, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 color (str). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c .setAutoFillBackground \u0432 True, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u043d \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f \u0446\u0432\u0435\u0442\u043e\u043c \u043e\u043a\u043d\u0430. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0430\u043b\u0438\u0442\u0440\u0443 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430) \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 QPalette.Window \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 QColor, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e color. \u041c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u044d\u0442\u0443 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u043a \u0432\u0438\u0434\u0436\u0435\u0442\u0443. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0432\u0438\u0434\u0436\u0435\u0442, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c (\u043a\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0431\u0435\u0434\u0430: \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u043c:<\/p>\n<pre><code class=\"python\">Color('red')<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 Color, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c. \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 QMainWindow \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setCentralWidget \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u043a\u043d\u043e \u0441\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          widget = Color('red')         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0440\u0430\u0441\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043c\u0430\u043a\u0435\u0442\u043e\u0432 Qt \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043c\u0430\u043a\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u043a\u043d\u043e, \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u043e\u043c QWidget.<\/p>\n<h4>QVBoxLayout: \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/h4>\n<p>\u0412 \u043c\u0430\u043a\u0435\u0442\u0435 QVBoxLayout \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043c. \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QVBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437\" title=\"QVBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437\" height=\"378\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/792\/55b\/98b\/79255b98b70836be4eb1472d3ac1d419.png\" data-width=\"321\"\/><figcaption>QVBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437<\/figcaption><\/figure>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0432 \u043c\u0430\u043a\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0432 QMainWindow, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 QWidget, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c .setCentralWidget, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u0438 \u043c\u0430\u043a\u0435\u0442 \u043a \u043e\u043a\u043d\u0443. \u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\u0435, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0441\u044f \u0432 QWidget, \u0432 \u043e\u043a\u043d\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QVBoxLayout()          layout.addWidget(Color('red'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432\u0438\u0434\u043d\u0430 \u0440\u0430\u043c\u043a\u0430. \u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u2014 \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u0430\u043a\u0435\u0442 \u0435\u0449\u0451 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u043e\u043d\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QVBoxLayout()          layout.addWidget(Color('red'))         layout.addWidget(Color('green'))         layout.addWidget(Color('blue'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QHBoxLayout: \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/h4>\n<p>\u041c\u0430\u043a\u0435\u0442 QHBoxLayout \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e. \u0412\u0438\u0434\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QHBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e\" title=\"QHBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e\" height=\"123\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db7\/075\/244\/db7075244bf2fa94eafda125aa034558.png\" data-width=\"1005\"\/><figcaption>QHBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0430\u043a\u0435\u0442 QVBoxLayout \u043d\u0430 QHBoxLayout. \u0412\u0438\u0434\u0436\u0435\u0442\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QHBoxLayout()          layout.addWidget(Color('red'))         layout.addWidget(Color('green'))         layout.addWidget(Color('blue'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b<\/h4>\n<p>\u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u043c\u0430\u043a\u0435\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .addLayout. \u041d\u0438\u0436\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c QVBoxLayout \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u043a\u0435\u0442 QHBoxLayout. \u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 QVBoxLayout \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0443\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u043e\u0442\u0435 \u043c\u0430\u043a\u0435\u0442\u0430-\u043f\u0440\u0435\u0434\u043a\u0430:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout1 = QHBoxLayout()         layout2 = QVBoxLayout()         layout3 = QVBoxLayout()          layout2.addWidget(Color('red'))         layout2.addWidget(Color('yellow'))         layout2.addWidget(Color('purple'))          layout1.addLayout( layout2 )          layout1.addWidget(Color('green'))          layout3.addWidget(Color('red'))         layout3.addWidget(Color('purple'))          layout1.addLayout( layout3 )          widget = QWidget()         widget.setLayout(layout1)         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u0412\u0438\u0434\u0436\u0435\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 3 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 3 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435!<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setContentMargins, \u0430 \u043c\u0435\u0436\u0434\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setSpacing:<\/p>\n<pre><code class=\"python\">layout1.setContentsMargins(0,0,0,0) layout1.setSpacing(20)<\/code><\/pre>\n<p>\u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441 \u0446\u0438\u0444\u0440\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0432\u043e\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout1 = QHBoxLayout()         layout2 = QVBoxLayout()         layout3 = QVBoxLayout()          layout1.setContentsMargins(0,0,0,0)         layout1.setSpacing(20)          layout2.addWidget(Color('red'))         layout2.addWidget(Color('yellow'))         layout2.addWidget(Color('purple'))          layout1.addLayout( layout2 )          layout1.addWidget(Color('green'))          layout3.addWidget(Color('red'))         layout3.addWidget(Color('purple'))          layout1.addLayout( layout3 )          widget = QWidget()         widget.setLayout(layout1)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QGridLayout: \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0432 \u0441\u0435\u0442\u043a\u0435<\/h4>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 QVBoxLayout \u0438 QHBoxLayout, \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0440\u043e\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u043a\u0435\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u043e\u0440\u043c\u044b. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u0435\u0442 QGridLayout.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0412 QGridLayout \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\" title=\"\u0412 QGridLayout \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f\" height=\"539\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e01\/84d\/edf\/e0184dedfedf0b3eee60aeb9a95f0d69.png\" data-width=\"659\"\/><figcaption>\u0412 QGridLayout \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0441\u0435\u0442\u043a\u0435 QGridLayout \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0435. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 QGridLayout \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0441\u0435\u0442\u043a\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QGridLayout \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0442\u0430\u043c\u0438\" title=\"QGridLayout \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0442\u0430\u043c\u0438\" height=\"539\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/81b\/b08\/b94\/81bb08b94b3747a7bce5622eef765cd0.png\" data-width=\"659\"\/><figcaption>QGridLayout \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0442\u0430\u043c\u0438<\/figcaption><\/figure>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QGridLayout()          layout.addWidget(Color('red'), 0, 0)         layout.addWidget(Color('green'), 1, 0)         layout.addWidget(Color('blue'), 1, 1)         layout.addWidget(Color('purple'), 2, 1)          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QStackedLayout: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0430\u043a\u0435\u0442 QStackedLayout. \u0412 \u043d\u0451\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. QStackedLayout \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u043a\u043b\u0430\u0434\u043e\u043a. \u0415\u0441\u0442\u044c \u0438 \u0432\u0438\u0434\u0436\u0435\u0442-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 QStackedWidget \u0441 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b. \u041e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setCentralWidget \u0441\u0442\u043e\u043f\u043a\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 QMainWindow.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\" title=\"QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\" height=\"618\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3b7\/e01\/a02\/3b7e01a025fabe230c7681c437d2e157.png\" data-width=\"678\"\/><figcaption>QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442<\/figcaption><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d 2-\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0446\u0438\u0444\u0440\u043e\u0439 1) \u0438 \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u0442 \u0432\u043f\u0435\u0440\u0451\u0434\" title=\"QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d 2-\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0446\u0438\u0444\u0440\u043e\u0439 1) \u0438 \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u0442 \u0432\u043f\u0435\u0440\u0451\u0434\" height=\"503\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ddb\/80b\/443\/ddb80b443e33d66509ab92c8e2f38ddb.png\" data-width=\"512\"\/><figcaption>QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d 2-\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0446\u0438\u0444\u0440\u043e\u0439 1) \u0438 \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u0442 \u0432\u043f\u0435\u0440\u0451\u0434<\/figcaption><\/figure>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QStackedLayout  # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          layout = QStackedLayout()          layout.addWidget(Color(\"red\"))         layout.addWidget(Color(\"green\"))         layout.addWidget(Color(\"blue\"))         layout.addWidget(Color(\"yellow\"))          layout.setCurrentIndex(3)          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QStackedWidget \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441 \u0432\u043a\u043b\u0430\u0434\u043a\u0430\u043c\u0438. \u0412 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0430 (\u0442\u0430\u0431). \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setCurrentIndex() \u0438\u043b\u0438 .setCurrentWidget() \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f, \u043a\u0430\u043a\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0432 \u0442\u043e\u0442 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442: \u0437\u0434\u0435\u0441\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0438\u043b\u0438 \u043f\u043e \u0441\u0430\u043c\u043e\u043c\u0443 \u0432\u0438\u0434\u0436\u0435\u0442\u0443.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u0434\u0435\u043c\u043e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c QStackedLayout \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 QButton \u043f\u0440\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtCore import Qt from PyQt6.QtWidgets import (     QApplication,     QHBoxLayout,     QLabel,     QMainWindow,     QPushButton,     QStackedLayout,     QVBoxLayout,     QWidget, )  from layout_colorwidget import Color   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          pagelayout = QVBoxLayout()         button_layout = QHBoxLayout()         self.stacklayout = QStackedLayout()          pagelayout.addLayout(button_layout)         pagelayout.addLayout(self.stacklayout)          btn = QPushButton(\"red\")         btn.pressed.connect(self.activate_tab_1)         button_layout.addWidget(btn)         self.stacklayout.addWidget(Color(\"red\"))          btn = QPushButton(\"green\")         btn.pressed.connect(self.activate_tab_2)         button_layout.addWidget(btn)         self.stacklayout.addWidget(Color(\"green\"))          btn = QPushButton(\"yellow\")         btn.pressed.connect(self.activate_tab_3)         button_layout.addWidget(btn)         self.stacklayout.addWidget(Color(\"yellow\"))          widget = QWidget()         widget.setLayout(pagelayout)         self.setCentralWidget(widget)      def activate_tab_1(self):         self.stacklayout.setCurrentIndex(0)      def activate_tab_2(self):         self.stacklayout.setCurrentIndex(1)      def activate_tab_3(self):         self.stacklayout.setCurrentIndex(2)   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QStackedLayout\" title=\"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QStackedLayout\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67d\/ba6\/5e3\/67dba65e33b6480ef80c8dc643c10123.png\" data-width=\"317\"\/><figcaption>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QStackedLayout<\/figcaption><\/figure>\n<p>\u0412 Qt \u0435\u0441\u0442\u044c TabWidget, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0442\u0430\u043a\u043e\u0439 \u043c\u0430\u043a\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb, \u0445\u043e\u0442\u044f \u0438 \u0432 \u0432\u0438\u0434\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u0430. \u0412\u043e\u0442 \u0434\u0435\u043c\u043e \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0432\u043e\u0441\u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QTabWidget:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtCore import Qt from PyQt6.QtWidgets import (     QApplication,     QLabel,     QMainWindow,     QPushButton,     QTabWidget,     QWidget, )  from layout_colorwidget import Color   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          tabs = QTabWidget()         tabs.setTabPosition(QTabWidget.West)         tabs.setMovable(True)          for n, color in enumerate([\"red\", \"green\", \"blue\", \"yellow\"]):             tabs.addTab(Color(color), color)          self.setCentralWidget(tabs)   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c QTabWidget\" title=\"\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c QTabWidget\" height=\"439\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/122\/f1b\/885\/122f1b8852c06def340b45f5308c0e8a.png\" data-width=\"955\"\/><figcaption>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0432\u0438\u0434\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c QTabWidget<\/figcaption><\/figure>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435? \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0449\u0435 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u0435\u0435! \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0430\u043c \u0441\u0432\u0435\u0442\u0430, \u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setMoveable. \u041f\u0430\u043d\u0435\u043b\u044c \u0432\u043a\u043b\u0430\u0434\u043e\u043a \u043d\u0430 macOS \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445: \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0438 \u0437\u0434\u0435\u0441\u044c \u0434\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 <em>\u043a\u0440\u0443\u0436\u043a\u043e\u0432<\/em> \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u043f\u0430\u043d\u0435\u043b\u044f\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u0414\u043b\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f <em>\u0440\u0435\u0436\u0438\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430<\/em> \u2014 \u0437\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043d\u043a\u0438\u0435 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. \u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a macOS:<\/p>\n<pre><code class=\"python\">    tabs = QTabWidget()     tabs.setDocumentMode(True)<\/code><\/pre>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"QTabWidget \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 macOS\" title=\"QTabWidget \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 macOS\" height=\"726\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e41\/236\/4e1\/e412364e1dfa245d60bfaa7b91647538.png\" data-width=\"624\"\/><figcaption>QTabWidget \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 macOS<\/figcaption><\/figure>\n<p>\u041f\u043e\u0437\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0441\u043b\u043e\u0436\u043d\u0435\u0435.<\/p>\n<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 Python \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e <a href=\"https:\/\/www.pythonguis.com\/pyqt5-book\/\">\u043a\u043d\u0438\u0433\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/a> \u044d\u0442\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438\u043b\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u0443\u0440\u0441\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p><a class=\"anchor\" name=\"a2\" id=\"a2\"><\/a><\/p>\n<h3>\u041f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u0435\u043d\u044e \u0438 QAction<\/h3>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0438\u0434\u0435\u043b\u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445: \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u043d\u044e. \u0422\u0430\u043a\u0436\u0435 \u0438\u0437\u0443\u0447\u0438\u043c \u0447\u0451\u0442\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Qt \u0434\u043b\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u2014 QAction.<\/p>\n<h4>\u041f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h4>\n<p>\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u042d\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u0438 \u0441 \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438 \u0438\/\u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u043d\u044e \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u0435\u043d. \u042d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445. \u0425\u043e\u0442\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 Microsoft Office, \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0435 \u043b\u0435\u043d\u0442\u043e\u0447\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\" height=\"28\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cfb\/8c9\/f2a\/cfb8c9f2a2fd099d9eb8f34014f1cbd5.png\" data-width=\"859\"\/><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/figcaption><\/figure>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441\u043e \u00ab\u0441\u043a\u0435\u043b\u0435\u0442\u0430\u00bb \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b\u0435 app.py (\u0432 \u043d\u0451\u043c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432\u0435\u0441\u044c \u0438\u043c\u043f\u043e\u0440\u0442 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u0430\u043f\u043e\u0432):<\/p>\n<pre><code class=\"python\">import sys from PyQt6.QtWidgets import (     QMainWindow, QApplication,     QLabel, QToolBar, QStatusBar ) from PyQt6.QtGui import QAction, QIcon from PyQt6.QtCore import Qt  class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u0435 \u0441 PyQt5 \u043d\u0430 PyQt6, QAction \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0434\u0443\u043b\u044c QtGui.<\/p>\n<h3>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/h3>\n<p>\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 Qt \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 QToolBar. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0430\u043d\u0435\u043b\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0441\u043e\u0437\u0434\u0430\u0432 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u0432\u0430\u0432 .addToolbar \u0432 QMainWindow. \u041f\u0435\u0440\u0435\u0434\u0430\u0432 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c QToolBar \u0441\u0442\u0440\u043e\u043a\u0443, \u0437\u0430\u0434\u0430\u0451\u043c \u0438\u043c\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: \u043f\u043e \u043d\u0435\u043c\u0443 \u044d\u0442\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         self.addToolBar(toolbar)       def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e\u043d\u043a\u0430\u044f \u0441\u0435\u0440\u0430\u044f \u043f\u043e\u043b\u043e\u0441\u043a\u0430 \u043d\u0430\u0432\u0435\u0440\u0445\u0443 \u043e\u043a\u043d\u0430. \u042d\u0442\u043e \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u043c\u044f \u043f\u0430\u043d\u0435\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0451.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041e\u043a\u043d\u043e \u0441 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432\" title=\"\u041e\u043a\u043d\u043e \u0441 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/994\/7b2\/9c7\/9947b29c78a51b7f90495d5b441a3068.png\" data-width=\"202\"\/><figcaption>\u041e\u043a\u043d\u043e \u0441 \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/figcaption><\/figure>\n<p>\u041d\u043e \u043a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432? \u041f\u043e\u0441\u043b\u0435 \u0435\u0451 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0433\u0434\u0435 \u043d\u0430\u0436\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0441\u043d\u043e\u0432\u0430 \u0435\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0434\u043d\u0443 \u043f\u0430\u043d\u0435\u043b\u044c \u043d\u0435\u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439, \u0438\u043b\u0438 \u0438\u043c\u0435\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0447\u0442\u043e\u0431\u044b \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438.<\/p>\n<p>\u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043f\u0430\u043d\u0435\u043b\u044c \u0447\u0443\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435. \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430 QButton \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b Qt \u2014 \u043a\u043b\u0430\u0441\u0441 QAction \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432. <\/p>\n<p>\u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043f\u0446\u0438\u044f \u00ab\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c\u00bb \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u043d\u044e \u00ab\u041f\u0440\u0430\u0432\u043a\u0430\u00bb, \u0438 \u0432 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0437\u043d\u0430\u0447\u043e\u043a \u043d\u043e\u0436\u043d\u0438\u0446) \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043f\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 Ctrl-X (Cmd-X \u043d\u0430 Mac). <\/p>\n<p>\u0411\u0435\u0437 QAction \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0435\u0451 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u0410 \u0432 Qt \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u043e\u0434\u0438\u043d QAction \u0441 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0432 \u043c\u0435\u043d\u044e, \u0438 \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e QAction \u0435\u0441\u0442\u044c \u0438\u043c\u0435\u043d\u0430, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u044b, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f (\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435).<\/p>\n<p>\u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 QAction:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         self.addToolBar(toolbar)          button_action = QAction(\"Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         toolbar.addAction(button_action)      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0443\u044e \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442 QAction (\u0442\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c). \u0417\u0430\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u0430\u043c QAction. \u041a\u043e\u0433\u0434\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0435\u0442\u043a\u0430 \u0434\u043b\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\/\u0438\u043b\u0438 \u0438\u043a\u043e\u043d\u043a\u0430. <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 QObject (\u044d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f). \u041f\u0435\u0440\u0435\u0434\u0430\u0451\u043c self \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u041a\u0430\u043a \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0434\u043b\u044f QAction \u044d\u043b\u0435\u043c\u0435\u043d\u0442-\u043f\u0440\u0435\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435.<\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0443 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u2014 \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0441\u0438\u0433\u043d\u0430\u043b .triggered \u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041e\u043d \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f (\u0438\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f) <em>QAction<\/em>.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c! \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043d\u0430\u043c\u0438 \u043c\u0435\u0442\u043a\u043e\u0439. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u0435\u0451, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0434\u0430\u0441\u0442 click (\u00ab\u041d\u0430\u0436\u0430\u0442\u0438\u0435\u00bb) \u0438 \u0441\u0442\u0430\u0442\u0443\u0441 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 QAction\" title=\"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 QAction\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cb3\/8dd\/fb6\/cb38ddfb6f6e237c356415c6fa193c2b.png\" data-width=\"202\"\/><figcaption>\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 QAction<\/figcaption><\/figure>\n<blockquote>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u0441\u0435\u0433\u0434\u0430 false? \u041f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, <em>\u043d\u0430\u0436\u0430\u0442\u0430<\/em> \u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0430 \u043d\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0441\u0435\u0433\u0434\u0430 false. \u0421\u043a\u043e\u0440\u043e \u043f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0451 \u043d\u0430\u0436\u0430\u0442\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0432\u044b\u0437\u044b\u0432\u0430\u044f QStatusBar, \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u0433\u043e \u0432 .setStatusBar. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u044d\u0442\u043e\u0433\u043e statusBar (\u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f) \u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e: \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u0451 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         self.addToolBar(toolbar)          button_action = QAction(\"Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         toolbar.addAction(button_action)          self.setStatusBar(QStatusBar(self))      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041d\u0430\u0432\u043e\u0434\u0438\u043c \u043a\u0443\u0440\u0441\u043e\u0440 \u043c\u044b\u0448\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u0432\u0438\u0434\u0438\u043c \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u0430.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0422\u0435\u043a\u0441\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0430 actions (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f)\" title=\"\u0422\u0435\u043a\u0441\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0430 actions (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f)\" height=\"218\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2b3\/0e7\/ab5\/2b30e7ab55c13bb0f8a4e24ae8ca3208.png\" data-width=\"294\"\/><figcaption>\u0422\u0435\u043a\u0441\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0443\u0440\u0441\u043e\u0440\u0430 \u043d\u0430 actions (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f)<\/figcaption><\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u0434\u0435\u043b\u0430\u0435\u043c QAction \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u043c: \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u2014 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c setCheckable(True) \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 QAction:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         self.addToolBar(toolbar)          button_action = QAction(\"Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          self.setStatusBar(QStatusBar(self))      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0443 \u2014 \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043d\u0430\u0436\u0430\u0442\u043e\u0433\u043e \u0432 \u043d\u0435\u043d\u0430\u0436\u0430\u0442\u043e\u0435. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043b\u043e\u0442\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0447\u0435\u0440\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 True \u0438 False.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0412\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432\" title=\"\u0412\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/09e\/721\/787\/09e72178707d2a5fff6e90a9510bf6b5.png\" data-width=\"202\"\/><figcaption>\u0412\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/figcaption><\/figure>\n<p>\u0415\u0441\u0442\u044c .toggled, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438\/\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438. \u042d\u0444\u0444\u0435\u043a\u0442 \u0442\u043e\u0442 \u0436\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 .toggled \u043e\u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0434\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442.<\/p>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043a \u043a\u043d\u043e\u043f\u043a\u0435 \u0438\u043a\u043e\u043d\u043a\u0443. \u0421\u043a\u0430\u0447\u0430\u0435\u043c \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 <a href=\"http:\/\/p.yusukekamiyamane.com\/\">\u043d\u0430\u0431\u043e\u0440 <\/a>\u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0438\u043a\u043e\u043d\u043e\u043a Fugue 16 \u0445 16 \u043f\u0438\u043a\u0441\u0435\u043b\u0435\u0439 \u042e\u0441\u0443\u043a\u044d\u00a0\u041a\u0430\u043c\u0438\u044f\u043c\u0430\u043d\u044d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0434\u0430\u0434\u0443\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434. \u042d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 \u043f\u0440\u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041d\u0430\u0431\u043e\u0440 \u0438\u043a\u043e\u043d\u043e\u043a Fugue \u043e\u0442 \u042e\u0441\u0443\u043a\u044d\u00a0\u041a\u0430\u043c\u0438\u044f\u043c\u0430\u043d\u044d\" title=\"\u041d\u0430\u0431\u043e\u0440 \u0438\u043a\u043e\u043d\u043e\u043a Fugue \u043e\u0442 \u042e\u0441\u0443\u043a\u044d\u00a0\u041a\u0430\u043c\u0438\u044f\u043c\u0430\u043d\u044d\" height=\"803\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4b0\/249\/8f6\/4b02498f6b0cab1b6031bf3038d6c012.png\" data-width=\"1600\"\/><figcaption>\u041d\u0430\u0431\u043e\u0440 \u0438\u043a\u043e\u043d\u043e\u043a Fugue \u043e\u0442 \u042e\u0441\u0443\u043a\u044d\u00a0\u041a\u0430\u043c\u0438\u044f\u043c\u0430\u043d\u044d<\/figcaption><\/figure>\n<p>\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u044f \u0432\u044b\u0431\u0440\u0430\u043b \u0444\u0430\u0439\u043b bug.png) \u0438 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442 QIcon, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 QIcon(&#8216;bug.png&#8217;). \u0415\u0441\u043b\u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0444\u0430\u0439\u043b \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043f\u0430\u043f\u043a\u0443, \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043b\u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443 \u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432 QAction, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0435\u0451 \u043f\u0435\u0440\u0432\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 QAction.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u043a\u043e\u043d\u043e\u043a, \u0438\u043d\u0430\u0447\u0435 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u043e\u0432. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e, \u0432\u044b\u0437\u0432\u0430\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e .setIconSize() \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c QSize:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My Awesome App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16,16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          self.setStatusBar(QStatusBar(self))       def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. QAction \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0432\u0438\u0434\u0435 \u0438\u043a\u043e\u043d\u043a\u0438. \u0412\u0441\u0451 \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439\" title=\"\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9aa\/f55\/be6\/9aaf55be676fc6c994aaeaf07438c35a.png\" data-width=\"202\"\/><figcaption>\u041a\u043d\u043e\u043f\u043a\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439<\/figcaption><\/figure>\n<blockquote>\n<p>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0427\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432: \u0438\u043a\u043e\u043d\u043a\u0443, \u0442\u0435\u043a\u0441\u0442 \u0438\u043b\u0438 \u0438\u043a\u043e\u043d\u043a\u0443 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u0432 Qt \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041e\u0421. \u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setToolButtonStyle. \u042d\u0442\u043e\u0442 \u0441\u043b\u043e\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Qt \u0442\u0430\u043a\u0438\u0435 \u0444\u043b\u0430\u0433\u0438:<\/p>\n<\/blockquote>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0424\u043b\u0430\u0433 PyQt6 (\u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434)<\/p>\n<\/th>\n<th>\n<p>\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p><code>Qt.ToolButtonIconOnly<\/code><\/p>\n<\/td>\n<td>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0438\u043a\u043e\u043d\u043a\u0430, \u0431\u0435\u0437 \u0442\u0435\u043a\u0441\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>Qt.ToolButtonTextOnly<\/code><\/p>\n<\/td>\n<td>\n<p>\u0422\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442, \u0431\u0435\u0437 \u0438\u043a\u043e\u043d\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>Qt.ToolButtonTextBesideIcon<\/code><\/p>\n<\/td>\n<td>\n<p>\u0418\u043a\u043e\u043d\u043a\u0430 \u0438 \u0442\u0435\u043a\u0441\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u0438\u043a\u043e\u043d\u043a\u043e\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>Qt.ToolButtonTextUnderIcon<\/code><\/p>\n<\/td>\n<td>\n<p>\u0418\u043a\u043e\u043d\u043a\u0430 \u0438 \u0442\u0435\u043a\u0441\u0442 \u043f\u043e\u0434 \u0438\u043a\u043e\u043d\u043a\u043e\u0439<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>Qt.ToolButtonFollowStyle<\/code><\/p>\n<\/td>\n<td>\n<p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0438\u043b\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 Qt.ToolButtonFollowStyle. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435\/\u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041e\u0431\u044b\u0447\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 \u0444\u043b\u0430\u0433: \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e <em>\u043d\u0430\u0442\u0438\u0432\u043d\u043e<\/em>.<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0442\u043e\u0440\u0443\u044e \u043a\u043d\u043e\u043f\u043a\u0443 \u0438 \u0432\u0438\u0434\u0436\u0435\u0442 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430. \u0421\u043c\u0435\u043b\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043b\u044e\u0431\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtCore import QSize, Qt from PyQt6.QtGui import QAction, QIcon from PyQt6.QtWidgets import (     QApplication,     QCheckBox,     QLabel,     QMainWindow,     QStatusBar,     QToolBar, )   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16, 16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"&amp;Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          toolbar.addSeparator()          button_action2 = QAction(QIcon(\"bug.png\"), \"Your &amp;button2\", self)         button_action2.setStatusTip(\"This is your button2\")         button_action2.triggered.connect(self.onMyToolBarButtonClick)         button_action2.setCheckable(True)         toolbar.addAction(button_action2)          toolbar.addWidget(QLabel(\"Hello\"))         toolbar.addWidget(QCheckBox())          self.setStatusBar(QStatusBar(self))      def onMyToolBarButtonClick(self, s):         print(\"click\", s)   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c! \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043d\u043e\u043f\u043e\u043a \u0438 \u0447\u0435\u043a\u0431\u043e\u043a\u0441.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 action \u0438 \u0434\u0432\u0443\u043c\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438\" title=\"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 action \u0438 \u0434\u0432\u0443\u043c\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fd1\/2a3\/7c8\/fd12a37c8054fd7d4b591b7f24989704.png\" data-width=\"202\"\/><figcaption>\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 action \u0438 \u0434\u0432\u0443\u043c\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u043c\u0438<\/figcaption><\/figure>\n<h4>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Python \u0438 Qt6<\/h4>\n<h4>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/h4>\n<p>\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e, \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u043e\u0435 \u0434\u043b\u044f 2021 \u0433\u043e\u0434\u0430 \u0438 PyQt6. \u0412\u0441\u0451, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<h3>\u041c\u0435\u043d\u044e<\/h3>\n<p>\u041c\u0435\u043d\u044e \u2014 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u043e\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043e\u043a\u043d\u0430 \u0438\u043b\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0432 macOS. \u041c\u0435\u043d\u044e \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0435\u043d\u044e \u0435\u0441\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0444\u0430\u0439\u043b, \u043f\u0440\u0430\u0432\u043a\u0430, \u0441\u043f\u0440\u0430\u0432\u043a\u0430 \u0438 \u0442. \u0434. \u041c\u0435\u043d\u044e \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438. \u0427\u0430\u0441\u0442\u043e \u0432 \u043c\u0435\u043d\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041c\u0435\u043d\u044e\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041c\u0435\u043d\u044e\" height=\"838\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0cb\/297\/ca8\/0cb297ca8f2e49ff490a40aad7f48b5b.png\" data-width=\"452\"\/><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u041c\u0435\u043d\u044e<\/figcaption><\/figure>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0435\u043d\u044e, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432 QMainWindow \u0441\u0442\u0440\u043e\u043a\u0443 \u043c\u0435\u043d\u044e .menuBar() \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0451 \u043c\u0435\u043d\u044e, \u0432\u044b\u0437\u0432\u0430\u0432 .addMenu() \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 &amp;File. \u0421\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u0430\u043c\u043f\u0435\u0440\u0441\u0430\u043d\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u044d\u0442\u043e \u043c\u0435\u043d\u044e \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f Alt.<\/p>\n<blockquote>\n<p>\u041d\u0430 macOS \u043e\u043d\u0430 \u043d\u0435 \u0432\u0438\u0434\u043d\u0430. \u041a\u043b\u0430\u0432\u0438\u0448\u044b \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 \u044d\u0442\u043e\u0439 \u041e\u0421 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u043d\u0430\u0447\u0435. \u0421\u043a\u043e\u0440\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f QAction. \u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0439\u0441\u044f QAction, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0443 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043c\u0435\u043d\u044e. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435, \u0432\u044b\u0437\u044b\u0432\u0430\u044f .addAction \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u043e\u0434\u043d\u043e \u0438\u0437 \u0443\u0436\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16, 16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"&amp;Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          toolbar.addSeparator()          button_action2 = QAction(QIcon(\"bug.png\"), \"Your &amp;button2\", self)         button_action2.setStatusTip(\"This is your button2\")         button_action2.triggered.connect(self.onMyToolBarButtonClick)         button_action2.setCheckable(True)         toolbar.addAction(button_action2)          toolbar.addWidget(QLabel(\"Hello\"))         toolbar.addWidget(QCheckBox())          self.setStatusBar(QStatusBar(self))          menu = self.menuBar()          file_menu = menu.addMenu(\"&amp;File\")         file_menu.addAction(button_action)      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u043d\u0430 \u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e. \u041e\u043d \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0439 \u2014 \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b QAction.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041c\u0435\u043d\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u043e\u043a\u043d\u0435 (\u043d\u0430 macOS \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430)\" title=\"\u041c\u0435\u043d\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u043e\u043a\u043d\u0435 (\u043d\u0430 macOS \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430)\" height=\"378\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ffc\/d3b\/a7a\/ffcd3ba7aecf1e751b62c8c60df63d4f.png\" data-width=\"568\"\/><figcaption>\u041c\u0435\u043d\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u043e\u043a\u043d\u0435 (\u043d\u0430 macOS \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u043a\u0440\u0430\u043d\u0430)<\/figcaption><\/figure>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043c\u0435\u043d\u044e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u2014 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e, \u0430 \u0435\u0449\u0451 \u0432\u0442\u043e\u0440\u043e\u0439 QAction:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16, 16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"&amp;Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          toolbar.addSeparator()          button_action2 = QAction(QIcon(\"bug.png\"), \"Your &amp;button2\", self)         button_action2.setStatusTip(\"This is your button2\")         button_action2.triggered.connect(self.onMyToolBarButtonClick)         button_action2.setCheckable(True)         toolbar.addAction(button_action2)          toolbar.addWidget(QLabel(\"Hello\"))         toolbar.addWidget(QCheckBox())          self.setStatusBar(QStatusBar(self))          menu = self.menuBar()          file_menu = menu.addMenu(\"&amp;File\")         file_menu.addAction(button_action)         file_menu.addSeparator()         file_menu.addAction(button_action2)      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u0443\u043d\u043a\u0442\u0430 \u043c\u0435\u043d\u044e, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0435\u0439.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043c\u0435\u043d\u044e:\" title=\"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043c\u0435\u043d\u044e:\" height=\"216\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e70\/e2b\/fbc\/e70e2bfbc5ee4bc35beabebec1e1b0d8.png\" data-width=\"277\"\/><figcaption>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043c\u0435\u043d\u044e:<\/figcaption><\/figure>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u043c\u0432\u043e\u043b \u0430\u043c\u043f\u0435\u0440\u0441\u0430\u043d\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043c\u0435\u043d\u044e <em>\u043a\u043b\u0430\u0432\u0438\u0448\u0438-\u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0435\u043b\u0438<\/em>, \u0447\u0442\u043e\u0431\u044b \u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0435\u0439 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u043f\u0443\u043d\u043a\u0442\u0443 \u043c\u0435\u043d\u044e, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043c\u0435\u043d\u044e \u043e\u0442\u043a\u0440\u044b\u0442\u043e. \u041d\u0430 macOS \u044d\u0442\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u0434\u043c\u0435\u043d\u044e, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e, \u0432\u044b\u0437\u044b\u0432\u0430\u044f addMenu() \u0432 \u043c\u0435\u043d\u044e-\u043f\u0440\u0435\u0434\u043a\u0435. \u0417\u0430\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u0430\u043a \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u043c\u0435\u043d\u044e:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          label = QLabel(\"Hello!\")         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16, 16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"&amp;Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         toolbar.addAction(button_action)          toolbar.addSeparator()          button_action2 = QAction(QIcon(\"bug.png\"), \"Your &amp;button2\", self)         button_action2.setStatusTip(\"This is your button2\")         button_action2.triggered.connect(self.onMyToolBarButtonClick)         button_action2.setCheckable(True)         toolbar.addAction(button_action2)          toolbar.addWidget(QLabel(\"Hello\"))         toolbar.addWidget(QCheckBox())          self.setStatusBar(QStatusBar(self))          menu = self.menuBar()          file_menu = menu.addMenu(\"&amp;File\")         file_menu.addAction(button_action)         file_menu.addSeparator()          file_submenu = file_menu.addMenu(\"Submenu\")         file_submenu.addAction(button_action2)      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041f\u043e\u0434\u043c\u0435\u043d\u044e, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u043c\u0435\u043d\u044e \u00abFile\u00bb\" title=\"\u041f\u043e\u0434\u043c\u0435\u043d\u044e, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u043c\u0435\u043d\u044e \u00abFile\u00bb\" height=\"220\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d8\/c8d\/502\/4d8c8d50255c55e5afa1e4ab5547a126.png\" data-width=\"409\"\/><figcaption>\u041f\u043e\u0434\u043c\u0435\u043d\u044e, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u043c\u0435\u043d\u044e \u00abFile\u00bb<\/figcaption><\/figure>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 QAction \u043a\u043b\u0430\u0432\u0438\u0448\u0443 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0451, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f setKeySequence(), \u0438 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448. \u0412 \u043c\u0435\u043d\u044e \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448.<\/p>\n<blockquote>\n<p>\u042d\u0442\u0430 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 QAction \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d QAction, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0430\u043a: \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a\u043b\u0430\u0432\u0438\u0448 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Qt \u0438\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 \u0431\u0435\u0440\u0443\u0442\u0441\u044f \u043e\u0442\u0442\u0443\u0434\u0430 \u0436\u0435. \u041f\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c \u041e\u0421.<\/p>\n<p>\u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043c\u0435\u043d\u044e \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          label = QLabel(\"Hello!\")          # \u0423 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Qt \u043c\u043d\u043e\u0433\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438         # \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432. \u0421\u043c. http:\/\/doc.qt.io\/qt-5\/qt.html         label.setAlignment(Qt.AlignmentFlag.AlignCenter)          # \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u043a\u043d\u0430. \u0412\u0438\u0434\u0436\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u0441\u044f,         # \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u0439\u043c\u0451\u0442 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043e\u043a\u043d\u0430.         self.setCentralWidget(label)          toolbar = QToolBar(\"My main toolbar\")         toolbar.setIconSize(QSize(16, 16))         self.addToolBar(toolbar)          button_action = QAction(QIcon(\"bug.png\"), \"&amp;Your button\", self)         button_action.setStatusTip(\"This is your button\")         button_action.triggered.connect(self.onMyToolBarButtonClick)         button_action.setCheckable(True)         # \u041a\u043b\u0430\u0432\u0438\u0448\u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432\u0432\u043e\u0434\u0438\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0438\u0445 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Ctrl+p),         # \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d Qt (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Qt.CTRL + Qt.Key_P)         # \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043e-\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, QKeySequence.Print)         button_action.setShortcut(QKeySequence(\"Ctrl+p\"))         toolbar.addAction(button_action)          toolbar.addSeparator()          button_action2 = QAction(QIcon(\"bug.png\"), \"Your &amp;button2\", self)         button_action2.setStatusTip(\"This is your button2\")         button_action2.triggered.connect(self.onMyToolBarButtonClick)         button_action2.setCheckable(True)         toolbar.addAction(button_action)          toolbar.addWidget(QLabel(\"Hello\"))         toolbar.addWidget(QCheckBox())          self.setStatusBar(QStatusBar(self))          menu = self.menuBar()          file_menu = menu.addMenu(\"&amp;File\")         file_menu.addAction(button_action)          file_menu.addSeparator()          file_submenu = file_menu.addMenu(\"Submenu\")          file_submenu.addAction(button_action2)      def onMyToolBarButtonClick(self, s):         print(\"click\", s)<\/code><\/pre>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043c\u0435\u043d\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QAction \u0438 QMenu.<\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c \u043e <a href=\"https:\/\/www.pythonguis.com\/pyqt5-book\/\">\u043a\u043d\u0438\u0433\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/a> \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043e \u043d\u0430\u0448\u0438\u0445 \u043a\u0443\u0440\u0441\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-analyst-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=analytics_dapr_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Analyst<\/a><\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p><a class=\"anchor\" name=\"a3\" id=\"a3\"><\/a><\/p>\n<h2>\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0438 \u043e\u043a\u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439<\/h2>\n<p>\u0414\u0438\u0430\u043b\u043e\u0433\u0438 \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 <em>\u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f<\/em> \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c (\u043e\u0442\u0441\u044e\u0434\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 <em>\u00ab\u0414\u0438\u0430\u043b\u043e\u0433\u00bb<\/em>). \u041e\u043d\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445, \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 <em>\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u0435<\/em> (\u0438\u043b\u0438 <em>\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435<\/em>) \u043e\u043a\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u043a\u0430 \u0438\u0445 \u043d\u0435 \u0437\u0430\u043a\u0440\u043e\u044e\u0442. \u0412 Qt \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0434\u043b\u044f \u0441\u0430\u043c\u044b\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430\" height=\"344\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8bf\/f6f\/10d\/8bff6f10dde5ef127949bbba9e8bc4b6.png\" data-width=\"738\"\/><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043f\u043e\u0438\u0441\u043a\u0430<\/figcaption><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430\" title=\"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430\" height=\"442\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/867\/5bd\/a7c\/8675bda7c7336e3341c5792f240a1e9f.png\" data-width=\"544\"\/><figcaption>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430: \u043e\u043a\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0444\u0430\u0439\u043b\u0430<\/figcaption><\/figure>\n<p>\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0432 Qt \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u043c QDialog. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0435 \u043e\u043a\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0438\u043f\u0430 QDialog, \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0449\u0438\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 QMainWindow, \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 QDialog. \u041d\u0430\u0447\u043d\u0451\u043c \u0441\u043e \u00ab\u0441\u043a\u0435\u043b\u0435\u0442\u0430\u00bb \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0439 \u043a \u043c\u0435\u0442\u043e\u0434\u0443 \u0441\u043b\u043e\u0442\u0430:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          button = QPushButton(\"Press me for a dialog!\")         button.clicked.connect(self.button_clicked)         self.setCentralWidget(button)      def button_clicked(self, s):         print(\"click\", s)   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<p>\u0412 \u0441\u043b\u043e\u0442\u0435 button_clicked, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438, \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0434\u0438\u0430\u043b\u043e\u0433\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 QMainWindow. \u0422\u0430\u043a \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0441\u0442\u0430\u043d\u0435\u0442 <em>\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c<\/em> QMainWindow, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u043e\u043a\u043d\u043e\u043c:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtWidgets import QApplication, QDialog, QMainWindow, QPushButton   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          button = QPushButton(\"Press me for a dialog!\")         button.clicked.connect(self.button_clicked)         self.setCentralWidget(button)      def button_clicked(self, s):         print(\"click\", s)          dlg = QDialog(self)         dlg.setWindowTitle(\"HELLO!\")         dlg.exec()   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec() <\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u043e\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<p>\u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0438\u043a\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .exec() \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0432 QApplication. \u042d\u0442\u043e \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435: \u043a\u043e\u0433\u0434\u0430 QDialog \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 exec, \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u2014 \u0438\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430.<\/p>\n<p>QDialog \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0438 \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0439\u0442\u0435, \u0447\u0442\u043e \u0435\u0449\u0451 \u0433\u0434\u0435-\u0442\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0435\u0449\u0451 \u0447\u0442\u043e-\u0442\u043e. \u041f\u043e\u0437\u0436\u0435 \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041f\u0443\u0441\u0442\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u043a\u043d\u043e\" title=\"\u041f\u0443\u0441\u0442\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u043a\u043d\u043e\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d22\/f16\/a5b\/d22f16a5b06458a1f27c1cfd029349b5.png\" data-width=\"202\"\/><figcaption>\u041f\u0443\u0441\u0442\u043e\u0439 \u0434\u0438\u0430\u043b\u043e\u0433, \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043e\u043a\u043d\u043e<\/figcaption><\/figure>\n<p>\u041f\u043e\u043a\u0430 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u043c\u0443 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u041e\u041a \u0438 Cancel, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0433 <em>\u043f\u0440\u0438\u043d\u044f\u0442\u044c<\/em> \u0438\u043b\u0438 <em>\u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c<\/em> \u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u0410 \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c QDialog, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441:<\/p>\n<pre><code class=\"python\">class CustomDialog(QDialog):     def __init__(self):         super().__init__()          self.setWindowTitle(\"HELLO!\")          QBtn = QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel          self.buttonBox = QDialogButtonBox(QBtn)         self.buttonBox.accepted.connect(self.accept)         self.buttonBox.rejected.connect(self.reject)          self.layout = QVBoxLayout()         message = QLabel(\"Something happened, is that OK?\")         self.layout.addWidget(message)         self.layout.addWidget(self.buttonBox)         self.setLayout(self.layout)<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u0438\u0437 QDialog \u043c\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 CustomDialog. \u0417\u0430\u0442\u0435\u043c \u0432 QMainWindow \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0431\u043b\u043e\u043a\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 __init__: \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f. \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0434\u043b\u044f QDialog \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setWindowTitle() \u2014 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u043b\u043e\u043a \u043a\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u043d\u043e\u043f\u043e\u043a \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430. \u041e\u043d \u0447\u0443\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c. \u042d\u0442\u043e \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043e \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c\u044e Qt \u0432 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 QButton \u0438\u0437 \u043c\u0430\u043a\u0435\u0442\u0430, \u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0434\u0445\u043e\u0434 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430 \u0445\u043e\u0441\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u041e\u041a \u0441\u043b\u0435\u0432\u0430 \u0438\u043b\u0438 \u0441\u043f\u0440\u0430\u0432\u0430). \u0412\u043e\u0437\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e: \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0430\u0435\u0442.<\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u2014 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0451\u043d \u0438\u0437 QDialogButtonBox:<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043a\u043d\u043e\u043f\u043e\u043a<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>QDialogButtonBox.StandardButton.Ok (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Ok).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Open (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Save (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Cancel (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043c\u0435\u043d\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Close (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0417\u0430\u043a\u0440\u044b\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Discard (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Apply (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Reset (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u0431\u0440\u043e\u0441\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.RestoreDefaults (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Help (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043f\u0440\u0430\u0432\u043a\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.SaveAll (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0451\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Yes (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.YesToAll (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u0430, \u0434\u043b\u044f \u0432\u0441\u0435\u0445\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.No (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041d\u0435\u0442\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Abort (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u0435\u0440\u0432\u0430\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Retry (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.Ignore (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QDialogButtonBox.StandardButton.NoButton (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041a\u043d\u043e\u043f\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00bb).<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u042d\u0442\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a, \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0432 \u0438\u0445 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0418\u041b\u0418\u00bb \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u0430\u043d\u0430\u043b\u0430 (|). \u0412 Qt \u043e\u0447\u0435\u0440\u0451\u0434\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b. \u0412\u043e\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u00ab\u041e\u041a\u00bb \u0438 \u00abCancel\u00bb:<\/p>\n<pre><code class=\"python\">buttons = QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f buttons \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0414\u0430\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 QDialogButtonBox. \u0424\u043b\u0430\u0433 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u043d\u043e\u043f\u043e\u043a \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0438, \u043a \u0441\u043b\u043e\u0442\u0430\u043c \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b QDialogButtonBox. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0438\u0433\u043d\u0430\u043b\u044b.accepted \u0438 .rejected \u043e\u0442 QDialogButtonBox \u043a \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0432 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u0435 \u0438\u0437 QDialog.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b QDialogButtonBox \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435, \u043d\u0430\u0434\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u043c\u0430\u043a\u0435\u0442 \u0434\u0438\u0430\u043b\u043e\u0433\u0430. \u0414\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043c\u0430\u043a\u0435\u0442, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442 QDialogButtonBox \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c CustomDialog \u0432 \u0441\u043b\u043e\u0442\u0435 MainWindow.button_clicked:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      # ... \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 __init__      def button_clicked(self, s):         print(\"click\", s)          dlg = CustomDialog()         if dlg.exec():             print(\"Success!\")         else:             print(\"Cancel!\")<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e parent=None, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 CustomDialog, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 button_clicked \u043e\u0431\u044a\u0435\u043a\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u2014 self:<\/p>\n<pre><code class=\"python\">    def button_clicked(self, s):         print(\"click\", s)          dlg = CustomDialog(self)         if dlg.exec():             print(\"Success!\")         else:             print(\"Cancel!\")<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c! \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0447\u043d\u043e \u043f\u043e \u0446\u0435\u043d\u0442\u0440\u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e\" title=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e\" height=\"189\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75e\/c7d\/c53\/75ec7dc53e449132ef473a6e494d9241.png\" data-width=\"297\"\/><figcaption>\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043f\u043e\u0432\u0435\u0440\u0445 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e<\/figcaption><\/figure>\n<p>\u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430! \u041c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435: \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043c\u0430\u043a\u0435\u0442, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e.<\/p>\n<h3>\u041f\u0440\u043e\u0441\u0442\u044b\u0435 \u043e\u043a\u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 QMessageBox<\/h3>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 \u043e\u043a\u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0438\u0435 \u043e\u043a\u043d\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0432 Qt \u0435\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0441 QMessageBox \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d: \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438, \u0441\u043f\u0440\u0430\u0432\u043a\u043e\u0439 \u0438\u043b\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c\u0438.<\/p>\n<p>\u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 QMessageBox:<\/p>\n<pre><code class=\"python\">import sys  from PyQt6.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox, QPushButton   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          button = QPushButton(\"Press me for a dialog!\")         button.clicked.connect(self.button_clicked)         self.setCentralWidget(button)      def button_clicked(self, s):         dlg = QMessageBox(self)         dlg.setWindowTitle(\"I have a question!\")         dlg.setText(\"This is a simple dialog\")         button = dlg.exec()          if button == QMessageBox.StandardButton.Ok:             print(\"OK!\")  app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c! \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 <em>\u041e\u041a<\/em>:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e QMessageBox\" title=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e QMessageBox\" height=\"137\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08b\/c7a\/35e\/08bc7a35e58d327c2b4b46772cbb01c2.png\" data-width=\"197\"\/><figcaption>\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e QMessageBox<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0438 \u0441 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u043c \u043e\u043a\u043d\u043e\u043c \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0432 QMessageBox \u043a\u043d\u043e\u043f\u043a\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441 \u0442\u0435\u043c \u0436\u0435 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441 | (\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u00ab\u0418\u041b\u0418\u00bb) \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u043d\u043e\u043f\u043e\u043a.<\/p>\n<details class=\"spoiler\">\n<summary>\u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043a\u043d\u043e\u043f\u043e\u043a<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>QMessageBox.StandardButton.Ok (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 Ok).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Open (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Save (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Cancel (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043c\u0435\u043d\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Close (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0417\u0430\u043a\u0440\u044b\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Discard (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Apply (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Reset (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u0431\u0440\u043e\u0441\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.RestoreDefaults (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Help (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043f\u0440\u0430\u0432\u043a\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.SaveAll (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0441\u0451\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Yes (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u0430\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.YesToAll (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u0414\u0430, \u0434\u043b\u044f \u0432\u0441\u0435\u0445\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.No (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041d\u0435\u0442\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.NoToAll (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041d\u0435\u0442, \u0434\u043b\u044f \u0432\u0441\u0435\u0445\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Abort (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u0435\u0440\u0432\u0430\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Retry (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0443\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.Ignore (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u00bb).<\/p>\n<\/li>\n<li>\n<p>QMessageBox.StandardButton.NoButton (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u00ab\u041a\u043d\u043e\u043f\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00bb).<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<p>\u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043a\u043e\u043d\u043a\u0443 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u043a\u043e\u043d\u043a\u0438<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p>QMessageBox.Icon.NoIcon (\u00ab\u0418\u043a\u043e\u043d\u043a\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00bb).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>QMessageBox.Icon.Question (\u00ab\u0418\u043a\u043e\u043d\u043a\u0430 \u043e\u043a\u043d\u0430-\u0432\u043e\u043f\u0440\u043e\u0441\u0430\u00bb).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>QMessageBox.Icon.Information (\u00ab\u0418\u043a\u043e\u043d\u043a\u0430 \u043e\u043a\u043d\u0430-\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438\u00bb).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>QMessageBox.Icon.Warning (\u00ab\u0418\u043a\u043e\u043d\u043a\u0430 \u043e\u043a\u043d\u0430-\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u00bb).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>QMessageBox.Icon.Critical (\u00ab\u0418\u043a\u043e\u043d\u043a\u0430 \u043e\u043a\u043d\u0430 \u0441 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439\u00bb).<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 <em>Yes<\/em> (\u00ab\u0414\u0430\u00bb) \u0438 <em>No<\/em> (\u00ab\u041d\u0435\u0442\u00bb):<\/p>\n<pre><code class=\"python\">    def button_clicked(self, s):         dlg = QMessageBox(self)         dlg.setWindowTitle(\"I have a question!\")         dlg.setText(\"This is a question dialog\")         dlg.setStandardButtons(QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No)         dlg.setIcon(QMessageBox.Icon.Question)         button = dlg.exec()          if button == QMessageBox.Yes:             print(\"Yes!\")         else:             print(\"No!\")<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 <em>Yes<\/em> (\u00ab\u0414\u0430\u00bb) \u0438 <em>No<\/em> (\u00ab\u041d\u0435\u0442\u00bb):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QMessageBox\" title=\"\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QMessageBox\" height=\"150\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f0\/63d\/c0c\/7f063dc0ccc53778653ad4411c612911.png\" data-width=\"249\"\/><figcaption>\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e QMessageBox<\/figcaption><\/figure>\n<p>\u041a\u043d\u0438\u0433\u0430 \u0430\u0432\u0442\u043e\u0440\u0430<\/p>\n<h3>\u0414\u0438\u0430\u043b\u043e\u0433\u0438 QMessageBox<\/h3>\n<p>\u0412 QMessageBox \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0449\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0442\u0430\u043a\u043e\u0433\u043e \u0442\u0438\u043f\u0430:<\/p>\n<pre><code class=\"python\">QMessageBox.about(parent, title, message) QMessageBox.critical(parent, title, message) QMessageBox.information(parent, title, message) QMessageBox.question(parent, title, message) QMessageBox.warning(parent, title, message)<\/code><\/pre>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 parent \u2014 \u044d\u0442\u043e \u043e\u043a\u043d\u043e, \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e. \u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0439\u0442\u0435 self. \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e-\u0432\u043e\u043f\u0440\u043e\u0441 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 <em>Yes<\/em> (\u00ab\u0414\u0430\u00bb) \u0438 <em>No<\/em> (\u00ab\u041d\u0435\u0442\u00bb):<\/p>\n<pre><code class=\"python\">    def button_clicked(self, s):          button = QMessageBox.question(self, \"Question dialog\", \"The longer message\")          if button == QMessageBox.StandardButton.Yes:             print(\"Yes!\")         else:             print(\"No!\")<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c! \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043c\u044b \u0434\u043e\u0431\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 .question().<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u0430 exec() \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u2014 \u043d\u0430\u0436\u0430\u0442\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u043a\u0430\u043a\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044f \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u043d\u043e\u043f\u043a\u0438.<\/p>\n<p>\u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u2014 information, question, warning \u0438 critical \u2014 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b buttons \u0438 defaultButton \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043d\u043e\u043f\u043e\u043a \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0438 \u0432\u044b\u0431\u043e\u0440\u0430 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442:<\/p>\n<pre><code class=\"python\">    def button_clicked(self, s):          button = QMessageBox.critical(             self,             \"Oh dear!\",             \"Something went very wrong.\",             buttons=QMessageBox.StandardButton.Discard | QMessageBox.StandardButton.NoToAll | QMessageBox.StandardButton.Ignore,             defaultButton=QMessageBox.StandardButton.Discard,         )          if button == QMessageBox.StandardButton.Discard:             print(\"Discard!\")         elif button == QMessageBox.StandardButton.NoToAll:             print(\"No to all!\")         else:             print(\"Ignore!\")<\/code><\/pre>\n<p>\u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u043c\u0438 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" alt=\"\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430! \u042d\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e\" title=\"\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430! \u042d\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e\" height=\"150\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d01\/c90\/b2d\/d01c90b2df9a1f775a934544aafc343f.png\" data-width=\"321\"\/><figcaption>\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430! \u042d\u0442\u043e \u0443\u0436\u0430\u0441\u043d\u043e\u0435 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e<\/figcaption><\/figure>\n<p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043e\u043d \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0410 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 Python \u0432\u0430\u043c \u043f\u043e\u043c\u043e\u0433\u0443\u0442 <a href=\"https:\/\/www.pythonguis.com\/pyqt6-book\/\">\u043a\u043d\u0438\u0433\u0430 \u0430\u0432\u0442\u043e\u0440\u0430<\/a> \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043d\u0430\u0448\u0438 \u043a\u0443\u0440\u0441\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_09022022&amp;utm_term=main\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<p><a class=\"anchor\" name=\"a4\" id=\"a4\"><\/a><\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430<\/h2>\n<p>\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c <em>\u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435<\/em> \u043e\u043a\u043d\u0430. \u042d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e, \u043d\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0432\u0442\u043e\u0440\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430, \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043e\u043a\u043d\u0430\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u043a\u043e\u0435-\u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\/\u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043e\u043a\u043d\u0430.<\/p>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430<\/strong><\/p>\n<p>\u0412 Qt \u043b\u044e\u0431\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u0431\u0435\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u2014 \u044d\u0442\u043e \u043e\u043a\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0432\u0438\u0434\u0436\u0435\u0442\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0438\u043f\u0430 (\u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 QWidget), \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 QMainWindow.<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 QMainWindow \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043e\u043a\u043d\u0435 <em>\u043d\u0443\u0436\u043d\u044b<\/em> \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u043c\u0435\u043d\u044e, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435\u0441\u044c QMainWindow. \u041d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0439\u0442\u0435, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u043e\u043d\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b, \u0432\u0435\u0434\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041a\u0430\u043a \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e <em>\u0441\u043e\u0437\u0434\u0430\u0442\u044c<\/em>, \u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c:<\/p>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget  import sys   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window\")         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):      def __init__(self):         super().__init__()         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.show_new_window)         self.setCentralWidget(self.button)      def show_new_window(self, checked):         w = AnotherWindow()         w.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/112\/e61\/89c\/112e6189ceb03a53013948ce5c8efb79.jpeg\" alt=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043e\u043a\u043d\u0430\" title=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043e\u043a\u043d\u0430\" width=\"202\" height=\"139\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/112\/e61\/89c\/112e6189ceb03a53013948ce5c8efb79.jpeg\" data-blurred=\"true\"\/><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u0433\u043e \u043e\u043a\u043d\u0430<\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u041f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <em>\u043c\u043e\u0436\u0435\u0442<\/em> \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u043e \u043b\u0438\u0448\u044c \u043d\u0430 \u0434\u043e\u043b\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442?<\/p>\n<pre><code class=\"python\">    def show_new_window(self, checked):         w = AnotherWindow()         w.show()<\/code><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043e\u043a\u043d\u0430 (\u0432\u0438\u0434\u0436\u0435\u0442\u0430) \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 w \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u041d\u043e, \u043f\u043e\u043a\u0438\u043d\u0443\u0432 \u043c\u0435\u0442\u043e\u0434, \u043c\u044b \u043e\u0441\u0442\u0430\u0451\u043c\u0441\u044f \u0431\u0435\u0437 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u044d\u0442\u0443 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <em>w<\/em>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0430 \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f, \u0430 \u043e\u043a\u043d\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043e\u043a\u043d\u043e <em>\u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c<\/em>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0435 self:<\/p>\n<pre><code class=\"python\">    def show_new_window(self, checked):         self.w = AnotherWindow()         self.w.show()<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e, \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f. \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0435\u0449\u0451 \u0440\u0430\u0437? \u041e\u043a\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u043e \u0441\u043d\u043e\u0432\u0430! \u042d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u043e\u043a\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0441\u0442\u0430\u0440\u043e\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 self.w, \u0430 \u0441\u0442\u0430\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u043e (\u0432\u0435\u0434\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u0433\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u0442). <\/p>\n<p>\u041f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u0432 \u043a\u043e\u0434\u0435. \u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432 \u043c\u0435\u0442\u043a\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e:<\/p>\n<pre><code class=\"python\">from random import randint   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0,100))         layout.addWidget(self.label)         self.setLayout(layout)<\/code><\/pre>\n<p>\u0411\u043b\u043e\u043a __init__ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 <em>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438<\/em> \u043e\u043a\u043d\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0438\u0441\u043b\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u0430 \u043e\u043a\u043d\u043e \u2014 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<blockquote>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u043a\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0438 \u043e\u043d\u043e \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043e. \u041f\u043e\u043a\u0430\u0436\u0435\u043c \u044d\u0442\u043e \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<\/blockquote>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget  import sys  from random import randint   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0,100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):      def __init__(self):         super().__init__()         self.w = None  # No external window yet.         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.show_new_window)         self.setCentralWidget(self.button)      def show_new_window(self, checked):         if self.w is None:             self.w = AnotherWindow()         self.w.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/bdb\/be2\/963\/bdbbe296347844f3ad6ca8d8152e754a.jpeg\" alt=\"\u0414\u043e\u0447\u0435\u0440\u043d\u0435\u0435 \u043e\u043a\u043d\u043e \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u043e\u0439\" title=\"\u0414\u043e\u0447\u0435\u0440\u043d\u0435\u0435 \u043e\u043a\u043d\u043e \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u043e\u0439\" width=\"310\" height=\"243\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bdb\/be2\/963\/bdbbe296347844f3ad6ca8d8152e754a.jpeg\" data-blurred=\"true\"\/><figcaption>\u0414\u043e\u0447\u0435\u0440\u043d\u0435\u0435 \u043e\u043a\u043d\u043e \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043a\u043e\u0439<\/figcaption><\/figure>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043d\u043e\u043f\u043a\u0438 \u043e\u043a\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043a\u043d\u0430 \u2014 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0443 \u0435\u0449\u0451 \u0440\u0430\u0437, \u0441\u043d\u043e\u0432\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0442\u043e \u0436\u0435 \u043e\u043a\u043d\u043e.<\/p>\n<p>\u042d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0434\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u043e\u043a\u043e\u043d. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u043a\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u0438\u043b\u0438 \u0432\u044b\u0432\u043e\u0434 \u043b\u043e\u0433\u043e\u0432. \u041d\u043e \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043e\u043a\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\/\u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044c.<\/p>\n<p><strong>\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430<\/strong><\/p>\n<p>\u0427\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043a\u0430\u0437 \u043e\u043a\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432 \u043c\u0435\u043d\u044e. \u041c\u044b \u0443\u0436\u0435 \u0432\u0438\u0434\u0435\u043b\u0438: \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043a\u043d\u043e \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430, \u043e\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u043a\u043d\u0430, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 \u043c\u0435\u0442\u043e\u0434 show_new_window \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442:<\/p>\n<pre><code class=\"python\">    def show_new_window(self, checked):         if self.w is None:             self.w = AnotherWindow()             self.w.show()          else:             self.w = None  # Discard reference, close wi<\/code><\/pre>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0432 \u0434\u043b\u044f self.w \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 None, \u043c\u044b \u0442\u0435\u0440\u044f\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043e\u043a\u043d\u043e, \u0438 \u043e\u043d\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u043a\u043d\u043e \u0442\u043e\u0436\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 self.w \u0431\u0443\u0434\u0435\u0442 None, \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0442\u0435\u0441\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0439\u0434\u0435\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u043a\u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u0433\u0434\u0435-\u0442\u043e \u0435\u0449\u0451. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043a\u043d\u043e \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u044f\u0432\u043d\u043e \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u0432 \u043d\u0451\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e .close(). \u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget  import sys  from random import randint   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0,100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):      def __init__(self):         super().__init__()         self.w = None  # No external window yet.         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.show_new_window)         self.setCentralWidget(self.button)      def show_new_window(self, checked):         if self.w is None:             self.w = AnotherWindow()             self.w.show()          else:             self.w.close()  # Close window.             self.w = None  # Discard reference.   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<p><a href=\"https:\/\/www.pythonguis.com\/pyqt5-book\/\"><strong>\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Python \u0438 Qt5 \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/strong><\/a><\/p>\n<p><strong>\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435 \u043e\u043a\u043d\u0430<\/strong><\/p>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u043d\u0430\u0434\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c. \u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043e\u043a\u043d\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u043a\u043d\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .show().<\/p>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430 \u0432 \u0431\u043b\u043e\u043a\u0435 __init__ \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0435 \u043e\u043a\u043d\u043e, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 self.w.show() \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 show_new_window:<\/p>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget  import sys  from random import randint   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0,100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):      def __init__(self):         super().__init__()         self.w = AnotherWindow()         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.show_new_window)         self.setCentralWidget(self.button)      def show_new_window(self, checked):         self.w.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u0434, \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441\u043d\u043e\u0432\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043e\u043a\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437, \u0438 \u0432\u044b\u0437\u043e\u0432 .show() \u0432 \u0443\u0436\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u043c \u043e\u043a\u043d\u0435 \u043d\u0435 \u0434\u0430\u0441\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430.<\/p>\n<p><strong>\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0441\u043a\u0440\u044b\u0442\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u043e\u043a\u043e\u043d<\/strong><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\/\u0438\u043b\u0438 \u0441\u043a\u0440\u044b\u0442\u044c, \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0437\u0430\u043d\u043e\u0432\u043e. \u0421\u043a\u0440\u044b\u0442\u043e\u0435 \u043e\u043a\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c: \u0431\u0443\u0434\u0443\u0447\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c, \u043e\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0432\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u044b\u0448\u0438 \u0438\/\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043e\u043a\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043e\u043a\u043d\u0430. \u041f\u043e\u0441\u043b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u043d\u044b \u043b\u044e\u0431\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0435\u0442\u043e\u0434 .toggle_window, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .isVisible() \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0432\u0438\u0434\u043d\u043e \u043b\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043a\u043d\u043e. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u043e\u043a\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .show(), \u0430 \u0435\u0441\u043b\u0438 \u0443\u0436\u0435 \u0432\u0438\u0434\u043d\u043e, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c .hide(), \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super().__init__()         self.w = AnotherWindow()         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.toggle_window)         self.setCentralWidget(self.button)      def toggle_window(self, checked):         if self.w.isVisible():             self.w.hide()          else:             self.w.show() <\/code><\/pre>\n<p>\u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u043c \u043e\u043a\u043d\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00ab\u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\/\u0441\u043a\u0440\u044b\u0442\u044c\u00bb:<\/p>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget  import sys  from random import randint   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent, it     will appear as a free-floating window as we want.     \"\"\"     def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0,100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()         self.w = AnotherWindow()         self.button = QPushButton(\"Push for Window\")         self.button.clicked.connect(self.toggle_window)         self.setCentralWidget(self.button)      def toggle_window(self, checked):         if self.w.isVisible():             self.w.hide()          else:             self.w.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c: \u043e\u043a\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0438 \u0431\u043b\u043e\u043a \u043e\u043a\u043d\u0430 __init__ \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e (\u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u043e \u0432 \u043c\u0435\u0442\u043a\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f) \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e.<\/p>\n<p><strong>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043d<\/strong><\/p>\n<p>\u0422\u043e\u0442 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u043a\u043e\u043d: \u043f\u043e\u043a\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043a\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f, \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442, \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f. \u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u2014 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u043a\u043d\u0430:<\/p>\n<pre><code class=\"python\">import sys from random import randint  from PyQt6.QtWidgets import (     QApplication,     QLabel,     QMainWindow,     QPushButton,     QVBoxLayout,     QWidget, )   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent,     it will appear as a free-floating window.     \"\"\"      def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0, 100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()         self.window1 = AnotherWindow()         self.window2 = AnotherWindow()          l = QVBoxLayout()         button1 = QPushButton(\"Push for Window 1\")         button1.clicked.connect(self.toggle_window1)         l.addWidget(button1)          button2 = QPushButton(\"Push for Window 2\")         button2.clicked.connect(self.toggle_window2)         l.addWidget(button2)          w = QWidget()         w.setLayout(l)         self.setCentralWidget(w)      def toggle_window1(self, checked):         if self.window1.isVisible():             self.window1.hide()          else:             self.window1.show()      def toggle_window2(self, checked):         if self.window2.isVisible():             self.window2.hide()          else:             self.window2.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/57a\/a12\/b3e\/57aa12b3e15c3f9db16c00457ab7bb42.jpeg\" alt=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438\" title=\"\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438\" width=\"520\" height=\"283\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/57a\/a12\/b3e\/57aa12b3e15c3f9db16c00457ab7bb42.jpeg\" data-blurred=\"true\"\/><figcaption>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043e\u043a\u043d\u043e \u0441 \u0434\u0432\u0443\u043c\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438<\/figcaption><\/figure>\n<p>\u041d\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u043e\u043a\u043e\u043d. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e<a href=\"https:\/\/www.pythonguis.com\/tutorials\/transmitting-extra-data-qt-signals\/\"> \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 Qt<\/a> (\u00ab\u041f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 Qt\u00bb) \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. <\/p>\n<p>\u042d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u0438 \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043d\u0438\u0436\u0435: \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u044f\u043c\u0431\u0434\u0430-\u0444\u0443\u043d\u043a\u0446\u0438\u044f. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 checked \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c, \u0432\u0435\u0434\u044c \u043e\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"python\">import sys from random import randint  from PyQt6.QtWidgets import (     QApplication,     QLabel,     QMainWindow,     QPushButton,     QVBoxLayout,     QWidget, )   class AnotherWindow(QWidget):     \"\"\"     This \"window\" is a QWidget. If it has no parent,     it will appear as a free-floating window.     \"\"\"      def __init__(self):         super().__init__()         layout = QVBoxLayout()         self.label = QLabel(\"Another Window % d\" % randint(0, 100))         layout.addWidget(self.label)         self.setLayout(layout)   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()         self.window1 = AnotherWindow()         self.window2 = AnotherWindow()          l = QVBoxLayout()         button1 = QPushButton(\"Push for Window 1\")         button1.clicked.connect(             lambda checked: self.toggle_window(self.window1)         )         l.addWidget(button1)          button2 = QPushButton(\"Push for Window 2\")         button2.clicked.connect(             lambda checked: self.toggle_window(self.window2)         )         l.addWidget(button2)          w = QWidget()         w.setLayout(l)         self.setCentralWidget(w)      def toggle_window(self, window):         if window.isVisible():             window.hide()          else:             window.show()   app = QApplication(sys.argv) w = MainWindow() w.show() app.exec()<\/code><\/pre>\n<p>\u0410 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Python \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e <a href=\"https:\/\/www.pythonguis.com\/pyqt5-book\/\">\u043a\u043d\u0438\u0433\u0435 \u0430\u0432\u0442\u043e\u0440\u0430<\/a> \u0438\u043b\u0438 \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u0443\u0440\u0441\u0430\u0445, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=conc\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_09022022&amp;utm_term=conc\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/594\/5e6\/aff\/5945e6aff160f3d5b5fd8e2abe05c780.png\" data-width=\"1000\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e <a href=\"https:\/\/skillfactory.ru\/catalogue?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=sf_allcourses_09022022&amp;utm_term=conc\">\u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/a>.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u0438 \u0438 \u043a\u0443\u0440\u0441\u044b<\/summary>\n<div class=\"spoiler__content\">\n<p><strong>Data Science \u0438 Machine Learning<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-scientist-pro?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dspr_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Data Scientist<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/matematika-dlya-data-science#syllabus?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_mat_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0434\u043b\u044f Data Science\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/matematika-i-machine-learning-dlya-data-science?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_matml_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u041c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430 \u0438 Machine Learning \u0434\u043b\u044f Data Science\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/data-engineer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_dea_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e Data Engineering<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/machine-learning-i-deep-learning?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_mldl_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00abMachine Learning \u0438 Deep Learning\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/machine-learning?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=data-science_ml_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e Machine Learning<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Python, \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 Python<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_pws_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00abPython \u0434\u043b\u044f \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/frontend-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fr_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Frontend-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/webdev?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_webdev_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0412\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/ios-razrabotchik-s-nulya?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_ios_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f iOS-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/android-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_andr_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Android-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Java \u0438 C#<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/java-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_java_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f Java-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/java-qa-engineer-testirovshik-po?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_qaja_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f QA-\u0438\u043d\u0436\u0435\u043d\u0435\u0440 \u043d\u0430 JAVA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/c-sharp-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_cdev_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f C#-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/game-razrabotchik-na-unity-i-c-sharp?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_gamedev_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0433\u0440 \u043d\u0430 Unity<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e\u0442 \u043e\u0441\u043d\u043e\u0432 \u2014 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/algoritmy-i-struktury-dannyh?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_algo_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u00ab\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/c-plus-plus-razrabotchik?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_cplus_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f C++ \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/cyber-security-etichnij-haker?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_hacker_09022022&amp;utm_term=cat\">\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u044f \u042d\u0442\u0438\u0447\u043d\u044b\u0439 \u0445\u0430\u043a\u0435\u0440<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410 \u0442\u0430\u043a\u0436\u0435<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/devops-ingineer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_devops_09022022&amp;utm_term=cat\">\u041a\u0443\u0440\u0441 \u043f\u043e DevOps<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/skillfactory.ru\/catalogue?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=sf_allcourses_09022022&amp;utm_term=cat\">\u0412\u0441\u0435 \u043a\u0443\u0440\u0441\u044b<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/648845\/\"> https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/648845\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 <a href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/599599\/\">\u043f\u0435\u0440\u0432\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 <\/a>\u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043a\u043d\u0430, \u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445, \u0441\u043b\u043e\u0442\u0430\u0445 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430\u0445. \u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043a\u0443\u0440\u0441\u0430 \u043f\u043e <a href=\"https:\/\/skillfactory.ru\/python-fullstack-web-developer?utm_source=habr&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=coding_fpw_09022022&amp;utm_term=lead\">Fullstack-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 Python<\/a>, \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435\u043c \u2014 \u043e \u043c\u0430\u043a\u0435\u0442\u0430\u0445, \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043f\u0430\u043d\u0435\u043b\u044f\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u043d\u044e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 QAction, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u043e\u043a\u043d\u0430\u0445. \u0417\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u043f\u043e\u0434 \u043a\u0430\u0442.<\/p>\n<ol>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a1\">\u041c\u0430\u043a\u0435\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a2\">\u041f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u0435\u043d\u044e \u0438 QAction<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a3\">\u0414\u0438\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430 \u0438 \u043e\u043a\u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/post\/648845\/#a4\">\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u043a\u043d\u0430<\/a><\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p><a class=\"anchor\" name=\"a1\" id=\"a1\"><\/a><\/p>\n<h2>\u041c\u0430\u043a\u0435\u0442\u044b<\/h2>\n<p>\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u043a\u043d\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u043d\u0435\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442. \u041d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 Qt \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f <em>\u043c\u0430\u043a\u0435\u0442\u044b<\/em>. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b 4 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043c\u0430\u043a\u0435\u0442\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p>\u041a\u043b\u0430\u0441\u0441 \u043c\u0430\u043a\u0435\u0442\u0430<\/p>\n<\/th>\n<th>\n<p>\u0422\u0438\u043f \u043c\u0430\u043a\u0435\u0442\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p><code>QHBoxLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QVBoxLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043c\u0430\u043a\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QGridLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u0441\u0435\u0442\u043a\u0430 X \u043d\u0430 Y<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p><code>QStackedLayout<\/code><\/p>\n<\/td>\n<td>\n<p>\u0423\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u043f\u043e \u043e\u0441\u0438 Z \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438 <a href=\"https:\/\/www.pythonguis.com\/tutorials\/qt-designer-gui-layout\/\">\u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c <\/a>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Qt designer. \u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u0430 \u043f\u043e\u043d\u044f\u0442\u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430.<\/p>\n<\/blockquote>\n<p>\u0412 Qt \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u043c\u0430\u043a\u0435\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432: VBoxLayout, QHBoxLayout \u0438 QGridLayout. \u0418 \u0435\u0441\u0442\u044c  QStackedLayout, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043e\u0434\u0438\u043d \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043c\u0430\u043a\u0435\u0442. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438. \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434 \u0432 \u0444\u0430\u0439\u043b\u0435 app.py:<\/p>\n<pre><code class=\"python\">import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget from PyQt6.QtGui import QPalette, QColor  class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")   app = QApplication(sys.argv)  window = MainWindow() window.show()  app.exec()<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u0430\u043a\u0435\u0442\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u043f\u043b\u043e\u0448\u043d\u043e\u0439 \u0446\u0432\u0435\u0442. \u0422\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0432 \u043c\u0430\u043a\u0435\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u044b. \u041d\u0430 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043a\u043e\u0434 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<pre><code class=\"python\">class Color(QWidget):      def __init__(self, color):         super(Color, self).__init__()         self.setAutoFillBackground(True)          palette = self.palette()         palette.setColor(QPalette.ColorRole.Window, QColor(color))         self.setPalette(palette)<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441 QWidget \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 Color, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043e\u0434\u0438\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u2014 color (str). \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c .setAutoFillBackground \u0432 True, \u0447\u0442\u043e\u0431\u044b \u0444\u043e\u043d \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f \u0446\u0432\u0435\u0442\u043e\u043c \u043e\u043a\u043d\u0430. \u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0430\u043b\u0438\u0442\u0440\u0443 (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043b\u0438\u0442\u0440\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430) \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 QPalette.Window \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 QColor, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e color. \u041c\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u044d\u0442\u0443 \u043f\u0430\u043b\u0438\u0442\u0440\u0443 \u043a \u0432\u0438\u0434\u0436\u0435\u0442\u0443. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0432\u0438\u0434\u0436\u0435\u0442, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c (\u043a\u0430\u043a\u0438\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438).<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u043d\u0435 \u0431\u0435\u0434\u0430: \u043f\u043e\u0437\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u043c:<\/p>\n<pre><code class=\"python\">Color('red')<\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 Color, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430 \u043e\u0434\u043d\u0438\u043c \u0446\u0432\u0435\u0442\u043e\u043c. \u041f\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 QMainWindow \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setCentralWidget \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u043a\u043d\u043e \u0441\u043e \u0441\u043f\u043b\u043e\u0448\u043d\u044b\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          widget = Color('red')         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u041f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043a\u0440\u0430\u0441\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442\u0441\u044f, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044f \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043c\u0430\u043a\u0435\u0442\u043e\u0432 Qt \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u043c\u0430\u043a\u0435\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u043a\u043d\u043e, \u043d\u0430\u0445\u043e\u0434\u044f\u0441\u044c \u0432 \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u043e\u043c QWidget.<\/p>\n<h4>QVBoxLayout: \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/h4>\n<p>\u0412 \u043c\u0430\u043a\u0435\u0442\u0435 QVBoxLayout \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043d\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u043c. \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0432\u0438\u0434\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043d\u0438\u0437 \u0441\u0442\u043e\u043b\u0431\u0446\u0430.<\/p>\n<figure class=\"\"><figcaption>QVBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u0432\u0435\u0440\u0445\u0443 \u0432\u043d\u0438\u0437<\/figcaption><\/figure>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432\u0438\u0434\u0436\u0435\u0442 \u0432 \u043c\u0430\u043a\u0435\u0442. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0430\u043a\u0435\u0442 \u0432 QMainWindow, \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u0444\u0438\u043a\u0442\u0438\u0432\u043d\u043e\u043c\u0443 QWidget, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c .setCentralWidget, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0438\u0434\u0436\u0435\u0442 \u0438 \u043c\u0430\u043a\u0435\u0442 \u043a \u043e\u043a\u043d\u0443. \u0426\u0432\u0435\u0442\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0430\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\u0435, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0441\u044f \u0432 QWidget, \u0432 \u043e\u043a\u043d\u0435. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u0430\u043a \u0440\u0430\u043d\u044c\u0448\u0435:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QVBoxLayout()          layout.addWidget(Color('red'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u043a\u0440\u0443\u0433 \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0432\u0438\u0434\u043d\u0430 \u0440\u0430\u043c\u043a\u0430. \u042d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u2014 \u043f\u043e\u0437\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u0430\u043a\u0435\u0442 \u0435\u0449\u0451 \u0446\u0432\u0435\u0442\u043d\u044b\u0445 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u043e\u043d\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QVBoxLayout()          layout.addWidget(Color('red'))         layout.addWidget(Color('green'))         layout.addWidget(Color('blue'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QHBoxLayout: \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b<\/h4>\n<p>\u041c\u0430\u043a\u0435\u0442 QHBoxLayout \u0442\u0430\u043a\u043e\u0439 \u0436\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e. \u0412\u0438\u0434\u0436\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u0440\u0430\u0432\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b.<\/p>\n<figure class=\"full-width\"><figcaption>QHBoxLayout, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e<\/figcaption><\/figure>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u043c \u043c\u0430\u043a\u0435\u0442 QVBoxLayout \u043d\u0430 QHBoxLayout. \u0412\u0438\u0434\u0436\u0435\u0442\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QHBoxLayout()          layout.addWidget(Color('red'))         layout.addWidget(Color('green'))         layout.addWidget(Color('blue'))          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b<\/h4>\n<p>\u0415\u0441\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043c\u0430\u043a\u0435\u0442\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0434\u0440\u0443\u0433 \u0432 \u0434\u0440\u0443\u0433\u0430 \u043c\u0430\u043a\u0435\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .addLayout. \u041d\u0438\u0436\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c QVBoxLayout \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u043a\u0435\u0442 QHBoxLayout. \u0415\u0441\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 QVBoxLayout \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432, \u043e\u043d\u0438 \u043f\u0440\u0438\u043c\u0443\u0442 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u043e\u0442\u0435 \u043c\u0430\u043a\u0435\u0442\u0430-\u043f\u0440\u0435\u0434\u043a\u0430:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout1 = QHBoxLayout()         layout2 = QVBoxLayout()         layout3 = QVBoxLayout()          layout2.addWidget(Color('red'))         layout2.addWidget(Color('yellow'))         layout2.addWidget(Color('purple'))          layout1.addLayout( layout2 )          layout1.addWidget(Color('green'))          layout3.addWidget(Color('red'))         layout3.addWidget(Color('purple'))          layout1.addLayout( layout3 )          widget = QWidget()         widget.setLayout(layout1)         self.setCentralWidget(widget)<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c. \u0412\u0438\u0434\u0436\u0435\u0442\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u0432 3 \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0442\u043e\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 3 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435!<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setContentMargins, \u0430 \u043c\u0435\u0436\u0434\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u2014 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setSpacing:<\/p>\n<pre><code class=\"python\">layout1.setContentsMargins(0,0,0,0) layout1.setSpacing(20)<\/code><\/pre>\n<p>\u041d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0441 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u0438 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u043c\u0430\u043a\u0435\u0442\u0430\u043c\u0438. \u041f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441 \u0446\u0438\u0444\u0440\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0432\u043e\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout1 = QHBoxLayout()         layout2 = QVBoxLayout()         layout3 = QVBoxLayout()          layout1.setContentsMargins(0,0,0,0)         layout1.setSpacing(20)          layout2.addWidget(Color('red'))         layout2.addWidget(Color('yellow'))         layout2.addWidget(Color('purple'))          layout1.addLayout( layout2 )          layout1.addWidget(Color('green'))          layout3.addWidget(Color('red'))         layout3.addWidget(Color('purple'))          layout1.addLayout( layout3 )          widget = QWidget()         widget.setLayout(layout1)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QGridLayout: \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0432 \u0441\u0435\u0442\u043a\u0435<\/h4>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 QVBoxLayout \u0438 QHBoxLayout, \u043e\u0447\u0435\u043d\u044c \u0441\u043b\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0440\u043e\u0432\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u0430\u043a\u0435\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0444\u043e\u0440\u043c\u044b. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0440\u0435\u0448\u0430\u0435\u0442 QGridLayout.<\/p>\n<figure class=\"full-width\"><figcaption>\u0412 QGridLayout \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<p>\u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u0441\u0435\u0442\u043a\u0435 QGridLayout \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0438 \u0441\u0442\u043e\u043b\u0431\u0446\u0435. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441 QGridLayout \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0441\u0435\u0442\u043a\u0435.<\/p>\n<figure class=\"full-width\"><figcaption>QGridLayout \u0441 \u043d\u0435\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0442\u0430\u043c\u0438<\/figcaption><\/figure>\n<pre><code class=\"python\">class MainWindow(QMainWindow):      def __init__(self):         super(MainWindow, self).__init__()          self.setWindowTitle(\"My App\")          layout = QGridLayout()          layout.addWidget(Color('red'), 0, 0)         layout.addWidget(Color('green'), 1, 0)         layout.addWidget(Color('blue'), 1, 1)         layout.addWidget(Color('purple'), 2, 1)          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<h4>QStackedLayout: \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0430\u043a\u0435\u0442 QStackedLayout. \u0412 \u043d\u0451\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c. QStackedLayout \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043b\u043e\u0451\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0432 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043b\u0438 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0432\u043a\u043b\u0430\u0434\u043e\u043a. \u0415\u0441\u0442\u044c \u0438 \u0432\u0438\u0434\u0436\u0435\u0442-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 QStackedWidget \u0441 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b. \u041e\u043d \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e .setCentralWidget \u0441\u0442\u043e\u043f\u043a\u0430 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0432 QMainWindow.<\/p>\n<figure class=\"full-width\"><figcaption>QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0432\u0438\u0434\u0436\u0435\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043c\u0430\u043a\u0435\u0442<\/figcaption><\/figure>\n<figure class=\"\"><figcaption>QStackedLayout \u2014 \u0437\u0434\u0435\u0441\u044c \u0432\u044b\u0431\u0440\u0430\u043d 2-\u0439 \u0432\u0438\u0434\u0436\u0435\u0442 (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0446\u0438\u0444\u0440\u043e\u0439 1) \u0438 \u0432\u044b\u0434\u0432\u0438\u043d\u0443\u0442 \u0432\u043f\u0435\u0440\u0451\u0434<\/figcaption><\/figure>\n<pre><code class=\"python\">from PyQt6.QtWidgets import QStackedLayout  # \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438   class MainWindow(QMainWindow):     def __init__(self):         super().__init__()          self.setWindowTitle(\"My App\")          layout = QStackedLayout()          layout.addWidget(Color(\"red\"))         layout.addWidget(Color(\"green\"))         layout.addWidget(Color(\"blue\"))         layout.addWidget(Color(\"yellow\"))          layout.setCurrentIndex(3)          widget = QWidget()         widget.setLayout(layout)         self.setCentralWidget(widget)<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-329338","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=329338"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/329338\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=329338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=329338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=329338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}