From 8179a3396476e6e6f631d34a127bb48c2eab70a4 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 24 Dec 2024 11:46:00 +0300 Subject: [PATCH] =?UTF-8?q?style:=20=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=20=D1=81=D1=82=D0=B8=D0=BB=D1=8C?= =?UTF-8?q?=20=D0=B2=D1=81=D0=B5=D0=B3=D0=BE=20=D0=BF=D1=80=D0=B8=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gui/__pycache__/mainGui.cpython-310.pyc | Bin 9091 -> 9092 bytes .../__pycache__/qt_settings.cpython-310.pyc | Bin 5364 -> 7107 bytes .../settings_window.cpython-310.pyc | Bin 6139 -> 6140 bytes src/gui/mainGui.py | 2 +- src/gui/qt_settings.py | 262 ---------- src/gui/settings_window.py | 4 +- .../__pycache__/qt_settings.cpython-310.pyc | Bin 0 -> 10430 bytes .../base/__pycache__/base.cpython-310.pyc | Bin 20848 -> 19688 bytes src/utils/base/base.py | 47 +- src/utils/qt_settings.py | 458 ++++++++++++++++++ 10 files changed, 468 insertions(+), 305 deletions(-) delete mode 100644 src/gui/qt_settings.py create mode 100644 src/utils/__pycache__/qt_settings.cpython-310.pyc create mode 100644 src/utils/qt_settings.py diff --git a/src/gui/__pycache__/mainGui.cpython-310.pyc b/src/gui/__pycache__/mainGui.cpython-310.pyc index 0765f31c05729d155c9dde577609fbfd8e70c121..ebb488602b45d5037b07527190f228028ed5cdb3 100644 GIT binary patch delta 47 zcmZp6Z*k|%=jG*M00N1;tn`eHyykquLjDD*MTsT(MGD2KB_)}8>BS10!}xSX0VV+r Aa{vGU delta 46 zcmZp1Z+7R+=jG*M0D^{;tn~DayykpDg8l`mMTsT(MGD2KB_)}8>BXDF`E*4AB`FQB diff --git a/src/gui/__pycache__/qt_settings.cpython-310.pyc b/src/gui/__pycache__/qt_settings.cpython-310.pyc index c37cdc555af06dafece7a0bb5a8607b0891d1591..1b55825d498b11aa2cb09d646781c2e481d8f7ee 100644 GIT binary patch literal 7107 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 diff --git a/src/gui/__pycache__/settings_window.cpython-310.pyc b/src/gui/__pycache__/settings_window.cpython-310.pyc index a6053f5ee471527d430a3c840dc7faab8decd2cc..2f379757855fc00b1564e8fbc9353141f1d1881f 100644 GIT binary patch delta 399 zcmYk$y-UMD6aes^jkV;%L;_J!(V|O1D2R(gaWGB&pz2(!NlHSAwW)o%qE2ptqulC0 zApsX>S7*uMEchQ((Dyos5AOHw-o1O=sPbLW`kE%^FqQ`AoyL>4Ar~?^@S&SJ^1}qP z(|7fYv8s5TcG$j9^^@f~HaCmi@WzdJ*n{2i5&Bnd;Bz1L(mTDFzpY~R^9KVCa91{9 z0TUb{*;JGSQ77VAK8iUkQoTWJ6FbB_VG|BXEKT5P)BRnLDWR|3EcIBGL#OS>FI?o$MMw`h;_}myh zCv)>h%ew(pM{#7QR>lKWB82#4YyB;*`wv%#vHonRz8eG9Ymu5Mc)*oIr#mh;RlGt{}n}M7V$m9w2dxEw!Q~ zH7}*efAU8mcW#htz-}mVp6o2VjnQ@UFX8))?$IFO7!VN)BE&$135bXT5z25v5yVmf z5%EA`GY}WE0SOKU9!3F{qWH-QVy@gsW=$>-lMqe>D%cHD$pTi%!dR3zdA8U&dFJ%e b%pw7xSdk@&5Cjn*Q;R?vilQfXi5CF?BZ5?k diff --git a/src/gui/mainGui.py b/src/gui/mainGui.py index 130e88c..b2776db 100644 --- a/src/gui/mainGui.py +++ b/src/gui/mainGui.py @@ -113,7 +113,7 @@ class MainWindow(BaseMainWindow): system_settings.setIcon(QIcon('resources/system_ico.png')) system_settings.triggered.connect(lambda: self._toggle_visibility(self.system_dock)) - operator_settings = QtWidgets.QAction("Operator settings", self) + operator_settings = QtWidgets.QAction("Operator settings ", self) operator_settings.setIcon(QIcon('resources/operator_ico.png')) operator_settings.triggered.connect(lambda: self._toggle_visibility(self.operator_dock)) diff --git a/src/gui/qt_settings.py b/src/gui/qt_settings.py deleted file mode 100644 index ee61175..0000000 --- a/src/gui/qt_settings.py +++ /dev/null @@ -1,262 +0,0 @@ -white_style = """ -QMainWindow { - background-color: #ffffff; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QMessageBox { - background-color: #ffffff; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QPushButton { - background-color: #d3d3d3; - color: #000000; - padding: 10px 20px; - border: none; - border-radius: 4px; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QPushButton:hover:!disabled { - background-color: #b0b0b0; -} -QPushButton:disabled { - background-color: #a9a9a9; - color: #7f7f7f; -} -QCheckBox { - color: #000000; - font-size: 14px; - font-family: "Segoe UI", sans-serif; -} -QLineEdit { - background-color: #f0f0f0; - color: #000000; - padding: 5px; - border: 1px solid #a9a9a9; - border-radius: 4px; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QLabel { - color: #000000; - font-size: 16px; - font-family: "Segoe UI", sans-serif; -} -QGroupBox { - color: #000000; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QRadioButton { - color: #000000; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -""" - -dark_style = """ -QWidget { - background-color: #0D1117; /* Тёмный, современный цвет для фона */ - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QMessageBox { - background-color: #161B22; - font-family: "Segoe UI", sans-serif; - font-size: 14px; -} -QPushButton { - background-color: #FFCC00; /* Яркий жёлтый цвет для акцента */ - color: #0D1117; /* Темный цвет текста для контраста с желтым */ - padding: 12px 25px; - border: 2px solid #E6B800; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -QPushButton:hover:!disabled { - background-color: #FFD700; /* Светлый желтый цвет для эффекта наведения */ -} -QPushButton:disabled { - background-color: #555555; - color: #cccccc; - border: none; -} -QCheckBox { - color: #ffffff; - font-size: 14px; - font-family: "Segoe UI", sans-serif; - font-weight: bold; -} -QLineEdit { - background-color: #21262D; - color: #ffffff; - padding: 8px; - border: 2px solid #30363D; - border-radius: 6px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -QLabel { - color: #ffffff; - font-size: 16px; - font-weight: bold; - font-family: "Segoe UI", sans-serif; -} -QGroupBox { - color: #ffffff; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; - border: 1px solid #30363D; - border-radius: 6px; - margin-top: 10px; -} -QRadioButton { - color: #ffffff; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -QSpinBox { - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -QDoubleSpinBox { - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -""" - -dis_robots = """ -QPushButton { - background-color: #555555; - color: #cccccc; - padding: 12px 25px; - border: none; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; -} -QWidget#robot { - border: none; - padding: 5px; - background-color: rgba(33, 33, 33, 100); -} -""" - -selected_robot = """ -QWidget#robot { - border: 2px solid #E6B800; - border-radius: 10px; - padding: 5px; -} -""" - - - -en_button = """ -QPushButton { - background-color: #FFCC00; - color: #0D1117; - padding: 12px 25px; - border: 2px solid #E6B800; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -QPushButton:hover:!disabled { - background-color: #FFD700; -} -""" - - -dis_button = """ -QPushButton { - background-color: #555555; - color: #cccccc; - padding: 12px 25px; - border: none; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; -} -""" - - -saved_button = """ -QPushButton { - background-color: #28a745; - color: #ffffff; - padding: 12px 25px; - border: none; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; -} -""" - - - -start_button = """ -QPushButton { - background-color: #FFCC00; - color: #0D1117; - padding: 20px 40px; - border: 2px solid #E6B800; - border-radius: 10px; - font-family: "Segoe UI", sans-serif; - font-size: 24px; - font-weight: bold; - background-image: linear-gradient(to bottom, #FFD700, #FFCC00); -} -QPushButton:hover:!disabled { - background-color: #FFD700; -} -QPushButton:pressed { - background-color: #E6B800; - padding-top: 22px; - padding-bottom: 18px; -} -QPushButton:disabled { - background-color: #555555; - color: #cccccc; - border: none; -} - -""" -BigSuccessLabel = """ -QLabel { - color: #ffffff; - font-size: 26px; - font-weight: bold; - font-family: "Segoe UI", sans-serif; -}""" - -colors = [ - '#FF6F61', # яркий коралловый - '#6B5B95', # приглушенный фиолетовый - '#88B04B', # яркий зеленый - '#F7CAC9', # светлый розовый - '#92A8D1', # светло-голубой - '#955251', # теплый терракотовый - '#B565A7', # лавандовый - '#009B77', # глубокий бирюзовый - '#DD4124', # ярко-красный - '#45B8AC' # мягкий мятный -] - -RGBA = [(255, 255, 0), - (32, 178, 70), - (255, 69, 0), - (123, 104, 238), - (99, 42, 15) -] \ No newline at end of file diff --git a/src/gui/settings_window.py b/src/gui/settings_window.py index f89a6e7..f159165 100644 --- a/src/gui/settings_window.py +++ b/src/gui/settings_window.py @@ -6,7 +6,7 @@ from PyQt5.QtWidgets import (QWidget, QPushButton, from PyQt5.QtGui import QIntValidator from utils.json_tools import read_json, write_json -from gui import qt_settings as qts +from utils import qt_settings as qts class settingsWindow(QWidget): def __init__(self, path: str, name: str, upd_func: Callable[[], None]): @@ -71,7 +71,7 @@ class settingsWindow(QWidget): layout.addLayout(control_layout) layout.addWidget(self._param_table) self.setLayout(layout) - self.setStyleSheet(qts.white_style) + self.setStyleSheet(qts.dark_style) def _populate_table(self) -> None: """Заполняет таблицу значениями из self._data.""" diff --git a/src/utils/__pycache__/qt_settings.cpython-310.pyc b/src/utils/__pycache__/qt_settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58e15663a40337b7bab7e90c146435faa7f9fd3f GIT binary patch literal 10430 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 F{{yNLlVkt@ delta 7875 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 PE&2L*ePjK0|HS_RqFrz^ diff --git a/src/utils/base/base.py b/src/utils/base/base.py index 65f5096..ccc18f0 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -3,13 +3,15 @@ from __future__ import annotations import os from typing import Optional, Union, Any from cachetools import LRUCache +import numpy as np +import pyqtgraph as pg import pandas as pd from PyQt5.QtCore import QObject, QTimer from PyQt5.QtWidgets import QWidget, QTabWidget, QMainWindow, QVBoxLayout from OptAlgorithm import OptAlgorithm -import numpy as np -import pyqtgraph as pg +from utils.qt_settings import dark_style + @@ -412,7 +414,7 @@ class BaseMainWindow(QMainWindow): # Устанавливаем основной вертикальный макет для центрального виджета self._central_layout = QVBoxLayout() self._central_widget.setLayout(self._central_layout) - self.set_style(self._central_widget) + self.set_style(self) ... @property @@ -423,43 +425,8 @@ class BaseMainWindow(QMainWindow): def controller(self, controller: BaseController) -> None: self._controller = controller - def set_style(self, object: Union[QTabWidget, QWidget]) -> None: - object.setStyleSheet(""" - QWidget { - background-color: #0D1117; - font-family: "Segoe UI", sans-serif; - font-size: 14px; - } - QMessageBox { - background-color: #161B22; - font-family: "Segoe UI", sans-serif; - font-size: 14px; - } - QPushButton { - background-color: #FFCC00; - color: #0D1117; - padding: 12px 25px; - border: 2px solid #E6B800; - border-radius: 8px; - font-family: "Segoe UI", sans-serif; - font-size: 16px; - font-weight: bold; - } - QPushButton:hover:!disabled { - background-color: #FFD700; - } - QPushButton:disabled { - background-color: #555555; - color: #cccccc; - border: none; - } - QLabel { - color: #ffffff; - font-size: 16px; - font-weight: bold; - font-family: "Segoe UI", sans-serif; - } - """) + def set_style(self, object: Union[QTabWidget, QWidget, QMainWindow]) -> None: + object.setStyleSheet(dark_style) class BasePointPassportFormer: diff --git a/src/utils/qt_settings.py b/src/utils/qt_settings.py new file mode 100644 index 0000000..3f87c4a --- /dev/null +++ b/src/utils/qt_settings.py @@ -0,0 +1,458 @@ +dark_style = """ +/* + ------------------------------------------------------ + Общие стили и базовые настройки + ------------------------------------------------------ +*/ +QWidget { + background-color: #0D1117; /* Основной фон приложения */ + font-family: "Segoe UI", sans-serif; + font-size: 14px; + color: #E0E0E0; /* Светло-серый текст для контраста на тёмном фоне */ +} + +QMainWindow { + background-color: #0D1117; + /* Дополнительное визуальное разделение центральной части */ + border: 1px solid #424242; +} + +/* +------------------------------------------------------ +Для небольшого визуального разделения между зонами + можно настроить QFrame, если используете фреймы: +QFrame { + border: 1px solid #424242; + border-radius: 4px; +} +------------------------------------------------------ +*/ + +/* + ------------------------------------------------------ + Стиль для окон сообщений + ------------------------------------------------------ +*/ +QMessageBox { + background-color: #0D1117; + font-family: "Segoe UI", sans-serif; + font-size: 14px; + color: #E0E0E0; +} + +/* + ------------------------------------------------------ + Кнопки (QPushButton) + ------------------------------------------------------ +*/ +QPushButton { + background-color: #FFCC00; /* Жёлтый цвет – акцент */ + color: #121212; + padding: 10px 20px; + border: none; + border-radius: 6px; + font-size: 16px; + font-weight: 600; +} + +/* Эффект при наведении */ +QPushButton:hover:!disabled { + background-color: #FFD700; /* Более светлый жёлтый */ +} + +/* Эффект при нажатии */ +QPushButton:pressed { + background-color: #E6B800; /* Более тёмный жёлтый */ +} + +/* Стиль для отключённых кнопок */ +QPushButton:disabled { + background-color: #424242; + color: #BDBDBD; +} + +/* + ------------------------------------------------------ + Чекбоксы и радиокнопки + ------------------------------------------------------ +*/ +QCheckBox, QRadioButton { + color: #E0E0E0; + font-size: 14px; + font-weight: 500; +} + +/* + ------------------------------------------------------ + Поля ввода (QLineEdit), спинбоксы, комбобоксы и т.п. + ------------------------------------------------------ +*/ +QLineEdit, QComboBox { + background-color: #1E1E1E; + color: #E0E0E0; + padding: 8px; + border: 1px solid #424242; + border-radius: 4px; + font-size: 16px; +} + +QSpinBox, QDoubleSpinBox { + background-color: #1E1E1E; + color: #E0E0E0; + padding: 5px; + border: 1px solid #424242; + border-radius: 4px; + font-size: 16px; +} + +/* + ------------------------------------------------------ + Метки и группбоксы + ------------------------------------------------------ +*/ +QLabel { + color: #E0E0E0; + font-size: 16px; + font-weight: 500; +} + +QGroupBox { + color: #E0E0E0; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + font-weight: 600; + border: 1px solid #424242; + border-radius: 6px; + margin-top: 10px; + padding: 10px; +} + +/* + ------------------------------------------------------ + Меню и панель меню + ------------------------------------------------------ +*/ +QMenuBar { + background-color: #1E1E1E; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + font-weight: 600; +} + +QMenuBar::item { + background: transparent; + padding: 18px 26px; + color: #E0E0E0; +} + +QMenuBar::item:selected { + background-color: #333333; + color: #FFD700; /* Жёлтый при наведении */ +} + +QMenuBar::item:pressed { + background-color: #555555; + color: #FFD700; /* Жёлтый при нажатии */ +} + +QMenu { + background-color: #1E1E1E; + color: #E0E0E0; + border: 3px solid #424242; +} + +QMenu::item { + padding: 10px 24px; + color: #E0E0E0; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + font-weight: 600; +} + +QMenu::item:selected { + background-color: #333333; + color: #FFD700; +} + +QMenu::item:pressed { + background-color: #555555; + color: #FFD700; +} + +/* + ------------------------------------------------------ + Полосы прокрутки (QScrollBar) + ------------------------------------------------------ +*/ +QScrollBar:vertical { + background: #2C2C2C; + width: 12px; + margin: 0; +} + +QScrollBar::handle:vertical { + background: #555555; + min-height: 20px; + border-radius: 6px; +} + +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + background: #2C2C2C; + height: 0px; + subcontrol-origin: margin; +} + +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical { + background: none; +} + +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + +/* + ------------------------------------------------------ + Табы (QTabWidget, QTabBar) + ------------------------------------------------------ +*/ +QTabWidget::pane { + border: 1px solid #424242; + background-color: #0D1117; +} + +QTabBar::tab { + background: #1E1E1E; + color: #E0E0E0; + padding: 8px 16px; + margin: 2px; + border-radius: 4px; +} + +QTabBar::tab:selected { + background: #333333; + font-weight: 600; + color: #FFD700; /* Выделим текст жёлтым при активной вкладке */ +} + +/* + ------------------------------------------------------ + Dock Widgets (QDockWidget) + ------------------------------------------------------ +*/ +QDockWidget { + background: #1E1E1E; + border: 1px solid #424242; +} + +/* Заголовок дока */ +QDockWidget::title { + background-color: #2C2C2C; + text-align: left; + font-size: 14px; + font-weight: 600; + padding: 6px 10px; + border-bottom: 1px solid #424242; + color: #E0E0E0; +} + +/* Кнопки закрытия и открепления (float) */ #FFD700 +QDockWidget::close-button, QDockWidget::float-button { + border: none; + background-color: #FFCC00; + icon-size: 18px; +} + +QDockWidget::close-button:hover, QDockWidget::float-button:hover { + background-color: #FFD700 ; +} + +/* + ------------------------------------------------------ + Таблицы (QTableWidget / QTableView) + ------------------------------------------------------ +*/ +QTableView { + background-color: #1E1E1E; + gridline-color: #424242; /* Линии сетки */ + color: #E0E0E0; /* Текст ячеек */ + border: 1px solid #424242; + selection-background-color: #FFCC00; /* Жёлтый при выделении */ + selection-color: #121212; /* Тёмный цвет текста при выделении */ +} + +/* Горизонтальный заголовок в таблицах */ +QHeaderView::section { + background-color: #2C2C2C; + color: #E0E0E0; + padding: 6px; + border: 1px solid #424242; + font-weight: 600; + font-size: 14px; +} + +/* Вертикальный заголовок в таблицах */ +QHeaderView::section:vertical { + background-color: #2C2C2C; + color: #E0E0E0; + padding: 4px; + border: 1px solid #424242; + font-weight: 600; + font-size: 14px; +} + +/* Полоса прокрутки в QTableView (если своя нужна) */ +QTableView QScrollBar:vertical { + background: #2C2C2C; + width: 12px; + margin: 0; +} + +QTableView QScrollBar::handle:vertical { + background: #555555; + min-height: 20px; + border-radius: 6px; +} + +/* + При желании можно добавить эффекты при наведении/клике на строки QTableView: + QTableView::item:hover { + background-color: #333333; + color: #FFD700; + } +*/ + +/* + ------------------------------------------------------ + Завершение стиля + ------------------------------------------------------ +*/ +""" + + + +dis_robots = """ +QPushButton { + background-color: #555555; + color: #cccccc; + padding: 12px 25px; + border: none; + border-radius: 8px; + font-family: "Segoe UI", sans-serif; + font-size: 16px; +} +QWidget#robot { + border: none; + padding: 5px; + background-color: rgba(33, 33, 33, 100); +} +""" + +selected_robot = """ +QWidget#robot { + border: 2px solid #E6B800; + border-radius: 10px; + padding: 5px; +} +""" + + + +en_button = """ +QPushButton { + background-color: #FFCC00; + color: #0D1117; + padding: 12px 25px; + border: 2px solid #E6B800; + border-radius: 8px; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + font-weight: bold; +} +QPushButton:hover:!disabled { + background-color: #FFD700; +} +""" + + +dis_button = """ +QPushButton { + background-color: #555555; + color: #cccccc; + padding: 12px 25px; + border: none; + border-radius: 8px; + font-family: "Segoe UI", sans-serif; + font-size: 16px; +} +""" + + +saved_button = """ +QPushButton { + background-color: #28a745; + color: #ffffff; + padding: 12px 25px; + border: none; + border-radius: 8px; + font-family: "Segoe UI", sans-serif; + font-size: 16px; + font-weight: bold; +} +""" + + + +start_button = """ +QPushButton { + background-color: #FFCC00; + color: #0D1117; + padding: 20px 40px; + border: 2px solid #E6B800; + border-radius: 10px; + font-family: "Segoe UI", sans-serif; + font-size: 24px; + font-weight: bold; + background-image: linear-gradient(to bottom, #FFD700, #FFCC00); +} +QPushButton:hover:!disabled { + background-color: #FFD700; +} +QPushButton:pressed { + background-color: #E6B800; + padding-top: 22px; + padding-bottom: 18px; +} +QPushButton:disabled { + background-color: #555555; + color: #cccccc; + border: none; +} + +""" +BigSuccessLabel = """ +QLabel { + color: #ffffff; + font-size: 26px; + font-weight: bold; + font-family: "Segoe UI", sans-serif; +}""" + +colors = [ + '#FF6F61', # яркий коралловый + '#6B5B95', # приглушенный фиолетовый + '#88B04B', # яркий зеленый + '#F7CAC9', # светлый розовый + '#92A8D1', # светло-голубой + '#955251', # теплый терракотовый + '#B565A7', # лавандовый + '#009B77', # глубокий бирюзовый + '#DD4124', # ярко-красный + '#45B8AC' # мягкий мятный +] + +RGBA = [(255, 255, 0), + (32, 178, 70), + (255, 69, 0), + (123, 104, 238), + (99, 42, 15) +] \ No newline at end of file