from PySide6.QtWidgets import ( QWidget, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QSlider, QSizePolicy, ) from PySide6.QtCore import Qt, QSize from PySide6.QtGui import QFont class MediaScreen(QWidget): def __init__(self): super().__init__() root = QVBoxLayout(self) root.setContentsMargins(18, 16, 18, 16) root.setSpacing(14) header = QHBoxLayout() header.setContentsMargins(0, 0, 0, 0) header.setSpacing(12) info_col = QVBoxLayout() info_col.setContentsMargins(0, 0, 0, 0) info_col.setSpacing(6) source = QLabel("Источник: Bluetooth") source.setObjectName("MediaSource") source.setFont(QFont("", 14, 600)) title = QLabel("Название трека") title.setObjectName("MediaTitle") title.setFont(QFont("", 22, 700)) artist = QLabel("Исполнитель") artist.setObjectName("MediaArtist") artist.setFont(QFont("", 16, 600)) info_col.addWidget(source) info_col.addWidget(title) info_col.addWidget(artist) info_col.addStretch(1) cover = QLabel("COVER") cover.setObjectName("MediaCover") cover.setAlignment(Qt.AlignCenter) cover.setFixedSize(QSize(240, 240)) header.addLayout(info_col, 1) header.addWidget(cover, 0, Qt.AlignRight | Qt.AlignTop) controls = QVBoxLayout() controls.setContentsMargins(0, 0, 0, 0) controls.setSpacing(12) progress = QSlider(Qt.Horizontal) progress.setObjectName("MediaProgress") progress.setRange(0, 100) progress.setValue(35) transport = QHBoxLayout() transport.setContentsMargins(0, 0, 0, 0) transport.setSpacing(16) btn_prev = QPushButton("⏮") btn_prev.setObjectName("MediaTransportBtn") btn_prev.setFixedSize(QSize(72, 72)) btn_play = QPushButton("▶") btn_play.setObjectName("MediaTransportBtnPrimary") btn_play.setFixedSize(QSize(96, 72)) btn_next = QPushButton("⏭") btn_next.setObjectName("MediaTransportBtn") btn_next.setFixedSize(QSize(72, 72)) transport.addStretch(1) transport.addWidget(btn_prev) transport.addWidget(btn_play) transport.addWidget(btn_next) transport.addStretch(1) volume_row = QHBoxLayout() volume_row.setContentsMargins(0, 0, 0, 0) volume_row.setSpacing(10) volume_lbl = QLabel("Громкость") volume_lbl.setObjectName("MediaVolumeLabel") volume_lbl.setFont(QFont("", 14, 600)) volume = QSlider(Qt.Horizontal) volume.setObjectName("MediaVolume") volume.setRange(0, 100) volume.setValue(55) volume.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) volume_row.addWidget(volume_lbl) volume_row.addWidget(volume, 1) controls.addWidget(progress) controls.addLayout(transport) controls.addLayout(volume_row) soft_keys = QHBoxLayout() soft_keys.setContentsMargins(0, 0, 0, 0) soft_keys.setSpacing(10) for label in ["SOURCE", "EQ", "FOLDER", "RANDOM", "REPEAT"]: btn = QPushButton(label) btn.setObjectName("MediaSoftBtn") btn.setMinimumHeight(52) soft_keys.addWidget(btn, 1) root.addLayout(header) root.addLayout(controls) root.addLayout(soft_keys)