def media_state_changed(self): if self.mediaPlayer.state() == QMediaPlayer.PlayingState: self.playBtn.setIcon(QIcon(resource_path(r'ico\pause.png'))) self.playBtn.setIconSize(QSize(40, 40)) else: self.playBtn.setIcon(QIcon(resource_path(r'ico\play.png'))) self.playBtn.setIconSize(QSize(40, 40))
def volume(self): if self.volumeBtn.objectName() == 'volume_btn': self.mediaPlayer.setMuted(True) self.volumeBtn.setObjectName('btn') self.volumeBtn.setIcon(QIcon(resource_path(r'ico\vol_muted.png'))) else: self.volumeBtn.setObjectName('volume_btn') self.mediaPlayer.setMuted(False) self.volumeBtn.setIcon(QIcon(resource_path(r'ico\volume1.png')))
def change_to_dark_theme(self): dark = '#3C3F41' new_dark_config = ''' QPushButton{ border: none; margin: 0px; padding: 0px; background-color: %s; } QPushButton:hover{ background-color: #B4B4B4 ; border-radius:7px; width: 30px; } ''' % dark config = '''QPushButton{ border: none; margin: 0px; padding: 0px; background-color:#F0F0F0; } QPushButton:hover{ background-color: #B4B4B4; border-radius:7px; width: 30px; } ''' if self.themeBtn.objectName() == 'default': self.setStyleSheet(f"background-color: {dark};") self.imageBtn.setStyleSheet(new_dark_config) self.themeBtn.setStyleSheet(new_dark_config) self.themeBtn.setIcon(QIcon(resource_path(r'ico/default.png'))) self.themeBtn.setIconSize((QSize(18, 18))) self.screenBtn.setStyleSheet(new_dark_config) self.playBtn.setStyleSheet(new_dark_config) self.backBtn.setStyleSheet(new_dark_config) self.forwardBtn.setStyleSheet(new_dark_config) self.volumeBtn.setStyleSheet(new_dark_config) self.blankBtn.setStyleSheet(new_dark_config) openBtn.setStyleSheet(new_dark_config) self.themeBtn.setObjectName('dark') else: self.setStyleSheet(f"background-color: #F0F0F0;") self.imageBtn.setStyleSheet(config) self.themeBtn.setStyleSheet(config) self.themeBtn.setIcon(QIcon(resource_path(r'ico/dark_mode.png'))) self.themeBtn.setIconSize((QSize(18, 18))) self.screenBtn.setStyleSheet(config) self.playBtn.setStyleSheet(config) self.backBtn.setStyleSheet(config) self.forwardBtn.setStyleSheet(config) self.volumeBtn.setStyleSheet(config) self.blankBtn.setStyleSheet(config) openBtn.setStyleSheet(config) self.themeBtn.setObjectName('default')
def min_volume(self): vol = self.mediaPlayer.volume() vol = min(vol - 5, 100) self.mediaPlayer.setVolume(vol) volume_state = self.hslider.sliderPosition() volume_state = min(volume_state - 5, self.hslider.sliderPosition()) self.hslider.setSliderPosition(volume_state) if self.mediaPlayer.volume() == 0 or self.mediaPlayer.isMuted(): self.volumeBtn.setIcon(QIcon(resource_path(r'ico\vol_muted.png'))) else: self.volumeBtn.setIcon(QIcon(resource_path(r'ico\volume1.png')))
def full_screen(self): if self.screenBtn.objectName() == 'fullscreen': self.showMaximized() self.screenBtn.setObjectName('normal_screen') # self.screenBtn.setToolTip('Возвращения окна стандартного режима') self.screenBtn.setIcon(QIcon( resource_path(r'ico\norm_screen.png'))) else: self.screenBtn.setObjectName('fullscreen') self.screenBtn.setIcon(QIcon(resource_path(r'ico\fullscreen.png'))) # self.screenBtn.setToolTip('Переключить на полноэкранный размер') self.showNormal()
def __init__(self): super().__init__() self.setFixedSize(720, 480) self.setWindowTitle('Image Area') self.setWindowIcon(QIcon(resource_path(r'ico/L.ico'))) self.setStyleSheet(self.stylesheet) self.setAcceptDrops(True) self.mainLayout = QVBoxLayout() self.photoViewer = ImageLabel() self.mainLayout.addWidget(self.photoViewer) self.setLayout(self.mainLayout)
def __init__(self): """ Инициализируем Класс нашего главного окна и в нем прописывем основные характеристики нашего окна (размер , цвет , "тайтл" и вызывает методы в которых отслеживаются события(перемещение мыши) и прописан внешний вид интерфейса """ super().__init__() self.setWindowTitle('v_|0.0.1|') self.resize(1280, 666) self.setWindowIcon(QIcon(resource_path(r'ico\L.ico'))) self.setStyleSheet("background-color: #F0F0F0;") self.setMouseTracking(True) self.setCursor(Qt.PointingHandCursor) self.init_ui() self.init_handlers() self.setAcceptDrops(True)
def test_resource_path_to_main(self): self.assertEqual(resource_path('main.py'), r'D:\py\viever\first\tests\main.py')
def test_resource_path_to_ico(self): self.assertEqual(resource_path('ico'), r'D:\py\viever\first\tests\ico')
def test_resource_path(self): self.assertEqual(resource_path(''), 'D:\\py\\viever\\first\\tests\\')
def set_volume_position(self, position): self.mediaPlayer.setVolume(position) if self.mediaPlayer.volume() == 0 or self.mediaPlayer.isMuted(): self.volumeBtn.setIcon(QIcon(resource_path(r'ico\vol_muted.png'))) elif self.mediaPlayer.volume() != 0 or self.mediaPlayer.isMuted(): self.volumeBtn.setIcon(QIcon(resource_path(r'ico\volume1.png')))
def volume_check(self): if self.mediaPlayer.volume() == 0: self.volumeBtn.setIcon(QIcon(resource_path(r'ico\vol_muted.png'))) if self.mediaPlayer.isMuted(): self.volumeBtn.setIcon(QIcon(resource_path(r'ico\vol_muted.png')))
def init_ui(self): conf_for_blank = ''' QPushButton{ border: none; margin: 0px; padding: 0px; background-color:#F0F0F0; } ''' config = ''' QPushButton{ border: none; margin: 0px; padding: 0px; background-color:#F0F0F0; } QPushButton:hover{ background-color: #B4B4B4; border-radius:7px; width: 30px; } ''' global hboxLayout global hboxLayout2 global vboxLayout global videowidget global openBtn # создание экземпляра(объекта) класса QMediaPlayer() и передача аргуметов # QMediaPlayer.VideoSurface указывает что он 'служит' для воспроизведения видео self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) # создание экземпляра(объекта) класса QVideoWidget() videowidget = QVideoWidget() videowidget.setStyleSheet('background-color: #B4B4B4;') # создание button(кнопки открыть) openBtn = QPushButton() openBtn.setStyleSheet(config) openBtn.setIcon(QIcon(resource_path(r'ico\folders.png'))) openBtn.setIconSize(QSize(20, 20)) openBtn.clicked.connect(self.open_file) openBtn.setToolTip('Открытие папок для просмотра файлов') openBtn.setToolTipDuration(2500) # создание button (кнопки для запуска) self.playBtn = QPushButton() self.playBtn.setEnabled(False) self.playBtn.setFlat(True) self.playBtn.setStyleSheet(config) self.playBtn.setIcon(QIcon(resource_path(r'ico\play.png'))) self.playBtn.setIconSize(QSize(40, 40)) self.playBtn.clicked.connect(self.play_video) # self.playBtn.clicked.connect(self.play_video) # создание button(кнопки для перемотки вперед) self.forwardBtn = QPushButton() self.forwardBtn.setEnabled(False) self.forwardBtn.setIcon(QIcon(resource_path(r'ico\forward.png'))) self.forwardBtn.setStyleSheet(config) self.forwardBtn.setIconSize(QSize(20, 20)) self.forwardBtn.clicked.connect(self.go_forward) # создание button (для перемотки назад) self.backBtn = QPushButton() self.backBtn.setEnabled(False) self.backBtn.setIcon(QIcon(resource_path(r'ico\backward .png'))) self.backBtn.setStyleSheet(config) self.backBtn.setIconSize(QSize(20, 20)) self.backBtn.clicked.connect(self.go_back) # для volume(громкости) self.volumeBtn = QPushButton() self.volumeBtn.setObjectName('volume_btn') self.volumeBtn.setIcon(QIcon(resource_path(r'ico\volume1.png'))) self.volumeBtn.setStyleSheet(config) self.volumeBtn.setIconSize(QSize(17, 17)) self.volumeBtn.clicked.connect(self.volume) # настройка button(кнопок) self.screenBtn = QPushButton() self.screenBtn.setObjectName('fullscreen') self.screenBtn.setStyleSheet(config) self.screenBtn.setIcon(QIcon(resource_path(r'ico\fullscreen.png'))) self.screenBtn.setIconSize(QSize(19, 19)) self.screenBtn.clicked.connect(self.full_screen) self.screenBtn.setToolTip('Переключить на полноэкранный размер') self.screenBtn.setToolTipDuration(2500) # ----- кнопки для пустых мест ----- # # создание button (для окна настроек) self.imageBtn = QPushButton() self.imageBtn.setIcon(QIcon(resource_path(r'ico\photo.png'))) self.imageBtn.setToolTip( 'Открывает второе окно которое позволяет взимодействовать с изображениями' ) self.imageBtn.setIconSize((QSize(18, 18))) self.imageBtn.setEnabled(True) self.imageBtn.setStyleSheet(config) self.themeBtn = Switch(thumb_radius=11, track_radius=8) self.themeBtn.setObjectName('default') self.themeBtn.setToolTip('Изменить задний фон') self.themeBtn.clicked.connect(self.change_to_dark_theme) self.blankBtn = QPushButton() self.blankBtn.setEnabled(False) self.blankBtn.setStyleSheet(conf_for_blank) # --------------------------------------- # # создание slider'а self.slider = MySlider(orient=Qt.Horizontal) self.slider.sliderMoved.connect(self.set_position) # создания slider для volume self.hslider = MySlider(orient=Qt.Horizontal) self.hslider.setRange(0, 100) self.hslider.setMaximumHeight(7) self.hslider.sliderMoved.connect(self.set_volume_position) self.hslider.setMaximumWidth(80) self.hslider.setSliderPosition(100) # создания label'а self.label1 = QLabel('0:00 /') self.label1.setToolTip('Прошло времени') self.label1.setFont(QFont('SansSerif', 8, QFont.Bold)) self.label2 = QLabel('0:00') self.label2.setToolTip('Общая продолжительность') self.label2.setFont(QFont('SansSerif', 8, QFont.Bold)) # создание hbox layout hboxLayout = QHBoxLayout() hboxLayout.setContentsMargins(0, 0, 0, 0) # создание hbox2 layout hboxLayout2 = QHBoxLayout() hboxLayout.setContentsMargins(0, 0, 0, 0) # добавления виджетов в hbox2 layout hboxLayout2.addWidget(self.label1) hboxLayout2.addWidget(self.label2) hboxLayout2.addWidget(self.slider) hboxLayout2.addWidget(self.volumeBtn) hboxLayout2.addWidget(self.hslider) # добавления виджетов в hbox layout hboxLayout.addWidget(self.themeBtn) hboxLayout.addWidget(self.blankBtn) hboxLayout.addWidget(openBtn) hboxLayout.addWidget(self.backBtn) hboxLayout.addWidget(self.playBtn) hboxLayout.addWidget(self.forwardBtn) hboxLayout.addWidget(self.imageBtn) hboxLayout.addWidget(self.screenBtn) # self.frame = MyFrame() vboxLayout = QVBoxLayout() # vboxLayout.addWidget(MyFrame()) vboxLayout.addWidget(videowidget) vboxLayout.addLayout(hboxLayout2) vboxLayout.addLayout(hboxLayout) self.setLayout(vboxLayout) self.mediaPlayer.setVideoOutput(videowidget) # обработчики медиа сигналов self.mediaPlayer.stateChanged.connect(self.media_state_changed) self.mediaPlayer.positionChanged.connect(self.position_changed) self.mediaPlayer.durationChanged.connect(self.duration_changed) self.mediaPlayer.volumeChanged.connect(self.set_volume_position) self.mediaPlayer.durationChanged.connect(self.duration_volume) # Несколько функций которые вызываются во время взаимодействия с клавишами для удобства self.volumeMinSc = QShortcut(QKeySequence('Down'), self) self.volumeMinSc.activated.connect(self.min_volume) self.volumePlusSc = QShortcut(QKeySequence('Up'), self) self.volumePlusSc.activated.connect(self.plus_volume) self.forwardSc = QShortcut(QKeySequence('Right'), self) self.forwardSc.activated.connect(self.go_forward_with_key) self.backSc = QShortcut(QKeySequence('Left'), self) self.backSc.activated.connect(self.go_back_with_key) self.fullscreenSc = QShortcut(QKeySequence('F'), self) self.fullscreenSc.activated.connect(self.full_screen)