-
Notifications
You must be signed in to change notification settings - Fork 0
/
playerwidget.py
76 lines (53 loc) · 2.14 KB
/
playerwidget.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from PyQt6.QtCore import Qt, QUrl
from PyQt6.QtWidgets import QWidget, QHBoxLayout, QLabel, QProgressBar, QPushButton, QSlider, QVBoxLayout
from PyQt6.QtGui import QPixmap
from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
from PyQt6.QtCore import QThread, pyqtSignal
import sessioncontroller
import requests
class PlayerWidget(QWidget):
def __init__(self):
super(PlayerWidget, self).__init__()
self.res: QNetworkReply | None = None
self.workerThread: getImageThread | None = None
# Construct Layout
layout = QHBoxLayout()
self.image = QPixmap()
self.imageWidget = QLabel()
self.imageWidget.setPixmap(self.image)
songInfoLayout = QVBoxLayout()
self.title = QLabel('Innocence')
self.artist = QLabel('Powerless feat. Sennzai')
songInfoLayout.addWidget(self.title)
songInfoLayout.addWidget(self.artist)
self.progress = QSlider(Qt.Orientation.Horizontal)
playButton = QPushButton('⏯')
nextButton = QPushButton('⏭')
playButton.setFlat(True)
nextButton.setFlat(True)
self.volume = QSlider(Qt.Orientation.Horizontal)
layout.addWidget(self.imageWidget)
layout.addLayout(songInfoLayout)
layout.addWidget(self.progress)
layout.addWidget(playButton)
layout.addWidget(nextButton)
layout.addWidget(self.volume)
# Set Layout
self.setLayout(layout)
def setImageFromHttp(self, url: str):
self.workerThread = getImageThread(url)
self.workerThread.start()
self.workerThread.finished.connect(self.setImageFromData)
def setImageFromData(self, data):
self.image.loadFromData(data)
self.imageWidget.setPixmap(self.image.scaled(80, 80, Qt.AspectRatioMode.KeepAspectRatio))
class getImageThread(QThread):
finished = pyqtSignal(bytes)
def __init__(self, url: str):
super(getImageThread, self).__init__()
self.url = url
def run(self):
res = requests.get(self.url)
self.finished.emit(res.content)
self.quit()
self.deleteLater()