我的应用程序的主容器self.box包含4个小部件:
play_btn开始播放字典中的 mp3 文件的按钮self.dict;pause_btn停止播放 mp3 文件的按钮;label显示正在播放的 mp3 文件名称的铭文;- 控制 mp3 文件何时播放的滑块
self.qsl。
我需要改变视觉特征self.qsl如下:
滑块的高度为
7px。表示文件已播放部分的滑块部分(图中用数字3表示)的颜色与表示文件未播放部分的滑块部分(用数字表示)的颜色不同图中2)。这两个部分都有圆角。
滑块滑块(图中用数字1表示)呈圆形,直径为 14px。我希望能够自定义它的颜色。
滑块滑块(图中用数字1表示)有一个笔划。我希望能够调整此笔划的宽度和颜色。
请告诉我该怎么做?
from PyQt5 import QtCore, QtWidgets, QtGui, QtMultimedia
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.dict = {
'C:/Users/User/Desktop/Player/music/13.Numb.mp3': []
}
self.song = ''
self.player = QtMultimedia.QMediaPlayer()
self.player.stateChanged.connect(self.playerState)
self.qsl = QtWidgets.QSlider(QtCore.Qt.Horizontal, self)
self.qsl.sliderMoved[int].connect(self.SetPlayPosition)
self.qsl.sliderReleased.connect(self.slider_released)
self.box = QtWidgets.QGridLayout(self)
for line, song in enumerate(self.dict):
play_btn = QtWidgets.QPushButton('Play', clicked=lambda ch, song=song: self.play(song))
pause_btn = QtWidgets.QPushButton('Pause', clicked=self.pause, enabled=False)
label = QtWidgets.QLabel(song)
self.box.addWidget(play_btn, line, 0)
self.box.addWidget(pause_btn, line, 1)
self.box.addWidget(label, line, 2)
self.dict[song].append(play_btn)
self.dict[song].append(pause_btn)
self.box.addWidget(self.qsl, 2, 0, 1, 3)
self.Play_Pause = True
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.PlayMode)
self.timer.start(1000)
def PlayMode(self):
if self.Play_Pause==False:
self.qsl.setMinimum(0)
self.qsl.setMaximum(self.player.duration())
self.qsl.setValue(self.qsl.value() + 1000)
def slider_released(self):
self.player.setPosition(self.qsl.value())
def SetPlayPosition(self, val):
pass
def play(self, song):
if self.player.isAudioAvailable() == False:
self.player.setMedia(QtMultimedia.QMediaContent(QtCore.QUrl(song)))
self.dict[song][1].setEnabled(True)
self.song = song
if self.song == song:
pass
else:
self.player.setMedia(QtMultimedia.QMediaContent(QtCore.QUrl(song)))
self.dict[self.song][1].setEnabled(False)
self.dict[song][1].setEnabled(True)
self.song = song
self.player.play()
self.Play_Pause=False
def pause(self):
self.player.pause()
self.Play_Pause=True
def playerState(self, state):
if state == 0:
self.Play_Pause=True
self.qsl.setSliderPosition(0)
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle('MP3-player, PyQt5')
window.show()
sys.exit(app.exec_())


它可能看起来像这样: