コード例 #1
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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))
コード例 #2
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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')))
コード例 #3
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
    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')
コード例 #4
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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')))
コード例 #5
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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()
コード例 #6
0
    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)
コード例 #7
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
    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)
コード例 #8
0
 def test_resource_path_to_main(self):
     self.assertEqual(resource_path('main.py'),
                      r'D:\py\viever\first\tests\main.py')
コード例 #9
0
 def test_resource_path_to_ico(self):
     self.assertEqual(resource_path('ico'), r'D:\py\viever\first\tests\ico')
コード例 #10
0
 def test_resource_path(self):
     self.assertEqual(resource_path(''), 'D:\\py\\viever\\first\\tests\\')
コード例 #11
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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')))
コード例 #12
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
 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')))
コード例 #13
0
ファイル: main.py プロジェクト: bekzod-fayzikuloff/viewer
    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)