class DownloadFrame(ScrollArea): def __init__(self, parent=None): super().__init__() self.parent = parent self.setObjectName('downloadMusic') with open('QSS/downloadFrame.qss', 'r', encoding="utf-8") as f: self.setStyleSheet(f.read()) self.mainLayout = QVBoxLayout(self) self.setHeader() self.setMusicTable() def setHeader(self): # self.titleLabel = QLabel("我的下载") self.spaceLine = QFrame(self) self.spaceLine.setObjectName("spaceLine") self.spaceLine.setFrameShape(QFrame.HLine) self.spaceLine.setFrameShadow(QFrame.Plain) self.spaceLine.setLineWidth(2) self.currentStorageFolderLabel = QLabel("当前存储目录: ") self.currentStorageFolder = QLabel() self.selectButton = QPushButton("选择目录") self.selectButton.setObjectName('selectButton') self.topShowLayout = QHBoxLayout() self.topShowLayout.addSpacing(20) # self.topShowLayout.addWidget(self.titleLabel) self.topShowLayout.addWidget(self.currentStorageFolderLabel) self.topShowLayout.addWidget(self.currentStorageFolder) self.topShowLayout.addWidget(self.selectButton) self.topShowLayout.addStretch(1) self.mainLayout.addLayout(self.topShowLayout) self.mainLayout.addWidget(self.spaceLine) def setMusicTable(self): self.singsTable = QTableWidget() self.singsTable.setObjectName('singsTable') self.singsTable.setMinimumWidth(self.width()) self.singsTable.setColumnCount(3) self.singsTable.setHorizontalHeaderLabels(['音乐标题', '歌手', '时长']) self.singsTable.setColumnWidth(0, self.width()/3*1.25) self.singsTable.setColumnWidth(1, self.width()/3*1.25) self.singsTable.setColumnWidth(2, self.width()/3*0.5) self.singsTable.horizontalHeader().setStretchLastSection(True) self.singsTable.verticalHeader().setVisible(False) self.singsTable.setShowGrid(False) self.singsTable.setAlternatingRowColors(True) self.singsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.singsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.mainLayout.addWidget(self.singsTable)
def setHeader(self): # self.titleLabel = QLabel("我的下载") self.spaceLine = QFrame(self) self.spaceLine.setObjectName("spaceLine") self.spaceLine.setFrameShape(QFrame.HLine) self.spaceLine.setFrameShadow(QFrame.Plain) self.spaceLine.setLineWidth(2) self.currentStorageFolderLabel = QLabel("当前存储目录: ") self.currentStorageFolder = QLabel() self.selectButton = QPushButton("选择目录") self.selectButton.setObjectName('selectButton') self.topShowLayout = QHBoxLayout() self.topShowLayout.addSpacing(20) # self.topShowLayout.addWidget(self.titleLabel) self.topShowLayout.addWidget(self.currentStorageFolderLabel) self.topShowLayout.addWidget(self.currentStorageFolder) self.topShowLayout.addWidget(self.selectButton) self.topShowLayout.addStretch(1) self.mainLayout.addLayout(self.topShowLayout) self.mainLayout.addWidget(self.spaceLine)
class DownloadFrame(ScrollArea): def __init__(self, parent=None): super().__init__() self.parent = parent self.setObjectName('downloadMusic') with open('QSS/downloadFrame.qss', 'r', encoding="utf-8") as f: self.setStyleSheet(f.read()) self.mainLayout = QVBoxLayout(self) self.setHeader() self.setMusicTable() def setHeader(self): # self.titleLabel = QLabel("我的下载") self.spaceLine = QFrame(self) self.spaceLine.setObjectName("spaceLine") self.spaceLine.setFrameShape(QFrame.HLine) self.spaceLine.setFrameShadow(QFrame.Plain) self.spaceLine.setLineWidth(2) self.currentStorageFolderLabel = QLabel("当前存储目录: ") self.currentStorageFolder = QLabel() self.selectButton = QPushButton("选择目录") self.selectButton.setObjectName('selectButton') self.topShowLayout = QHBoxLayout() self.topShowLayout.addSpacing(20) # self.topShowLayout.addWidget(self.titleLabel) self.topShowLayout.addWidget(self.currentStorageFolderLabel) self.topShowLayout.addWidget(self.currentStorageFolder) self.topShowLayout.addWidget(self.selectButton) self.topShowLayout.addStretch(1) self.mainLayout.addLayout(self.topShowLayout) self.mainLayout.addWidget(self.spaceLine) def setMusicTable(self): self.singsTable = QTableWidget() self.singsTable.setObjectName('singsTable') self.singsTable.setMinimumWidth(self.width()) self.singsTable.setColumnCount(3) self.singsTable.setHorizontalHeaderLabels(['音乐标题', '歌手', '时长']) self.singsTable.setColumnWidth(0, self.width() / 3 * 1.25) self.singsTable.setColumnWidth(1, self.width() / 3 * 1.25) self.singsTable.setColumnWidth(2, self.width() / 3 * 0.5) self.singsTable.horizontalHeader().setStretchLastSection(True) self.singsTable.verticalHeader().setVisible(False) self.singsTable.setShowGrid(False) self.singsTable.setAlternatingRowColors(True) self.singsTable.setEditTriggers(QAbstractItemView.NoEditTriggers) self.singsTable.setSelectionBehavior(QAbstractItemView.SelectRows) self.mainLayout.addWidget(self.singsTable)
def __init__(self, parent=None): super(PhoneAndEMailFrame, self).__init__() self.parent = parent self.resize(520, 300) with open('QSS/phoneAndEMailFrame.qss', 'r') as f: self.setStyleSheet(f.read()) self.mainLayout = VBoxLayout(self) self.header = Header("用户名", self) self.header.setMinimumHeight(40) self.header.connectCloseButton(self.parent.accept) self.mainLayout.addWidget(self.header) self.mainLayout.addStretch(1) self.usernameLine = InputLine(self, 220, 32, '请输入用户名') self.usernameLine.setObjectName('usernameLine') self.usernameCenterBox = HStretchBox(self.mainLayout, self.usernameLine) self.mainLayout.addSpacing(10) self.passwordLine = InputLine(self, 220, 32, '请输入密码') self.passwordLine.setObjectName('passwordLine') self.passwordCenterBox = HStretchBox(self.mainLayout, self.passwordLine) self.passwordLine.setEchoMode(QLineEdit.Password) self.warningIconLabel = QLabel() self.warningIconLabel.setObjectName('warningIconLabel') self.warningIconLabel.setMaximumSize(14, 14) self.warningIconLabel.setMinimumSize(14, 14) self.warningIconLabel.hide() self.warningLabel = QLabel("请输入用户名") self.warningLabel.hide() self.warningLabel.setObjectName('warningLabel') self.warningCenterBox = HStretchBox(self.mainLayout, self.warningIconLabel, self.warningLabel, behindStretch=2) self.mainLayout.addSpacing(30) self.enterLoginButton = QPushButton("登 录") self.enterLoginButton.setObjectName("enterButton") self.enterLoginButton.setMaximumSize(217, 27) self.enterLoginButton.setMinimumSize(217, 27) self.enterLoginCenterBox = HStretchBox(self.mainLayout, self.enterLoginButton) self.mainLayout.addSpacing(30) self.mainLayout.addStretch(1)
def setButtons(self): self.showButton = QPushButton("歌单") self.showButton.setObjectName('showButton') self.showButton.setMaximumSize(36, 20) self.descriptionButton = QPushButton(" 简介 :") self.descriptionButton.setObjectName('descriptionButton') self.descriptionButton.setMaximumSize(36, 36) self.playAllButton = QPushButton("全部播放") self.playAllButton.setIcon(QIcon('resource/playAll.png')) self.playAllButton.setObjectName('playAllButton') self.playAllButton.setMaximumSize(90, 24)
def setTopShow(self): self.showLabel = QLabel("本地音乐") self.spaceLine = QFrame(self) self.spaceLine.setObjectName("spaceLine") self.spaceLine.setFrameShape(QFrame.HLine) self.spaceLine.setFrameShadow(QFrame.Plain) self.spaceLine.setLineWidth(2) self.selectButton = QPushButton("选择目录") self.selectButton.setObjectName('selectButton') self.topShowLayout = QHBoxLayout() self.topShowLayout.addSpacing(20) self.topShowLayout.addWidget(self.showLabel) self.topShowLayout.addWidget(self.selectButton) self.topShowLayout.addStretch(1) self.mainLayout.addLayout(self.topShowLayout) self.mainLayout.addWidget(self.spaceLine)
def setButtons(self): """创建所有的按钮。""" self.closeButton = QPushButton('×', self) self.closeButton.setObjectName("closeButton") self.closeButton.setMinimumSize(21, 17) self.showminButton = QPushButton('_', self) self.showminButton.setObjectName("minButton") self.showminButton.setMinimumSize(21, 17) self.showmaxButton = QPushButton('□') self.showmaxButton.setObjectName("maxButton") self.showmaxButton.setMaximumSize(16, 16) self.loginButton = QPushButton("未登录 ▼", self) self.loginButton.setObjectName("loginButton") self.prevButton = QPushButton("<") self.prevButton.setObjectName("prevButton") self.prevButton.setMaximumSize(28, 22) self.prevButton.setMinimumSize(28, 22) self.nextButton = QPushButton(">") self.nextButton.setObjectName("nextButton") self.nextButton.setMaximumSize(28, 22) self.nextButton.setMinimumSize(28, 22)
def setButtons(self): """创建所有的按钮。""" self.closeButton = QPushButton('×', self) self.closeButton.setObjectName("closeButton") self.closeButton.setMinimumSize(21, 17) self.showminButton = QPushButton('_', self) self.showminButton.setObjectName("minButton") self.showminButton.setMinimumSize(21, 17) self.loginButton = QPushButton("未登录 ▼", self) self.loginButton.setObjectName("loginButton") self.prevButton = QPushButton("<") self.prevButton.setObjectName("prevButton") self.prevButton.setMaximumSize(28, 22) self.prevButton.setMinimumSize(28, 22) self.nextButton = QPushButton(">") self.nextButton.setObjectName("nextButton") self.nextButton.setMaximumSize(28, 22) self.nextButton.setMinimumSize(28, 22)
def __init__(self, title: str, parent=None): super(Header, self).__init__() self.parent = None self.setStyleSheet(self.myStyle) self.mainLayout = HBoxLayout(self) self.title = QLabel(title) self.mainLayout.addWidget(self.title) self.mainLayout.addStretch(1) self.closeButton = QPushButton('×') self.mainLayout.addWidget(self.closeButton)
class Header(QFrame): def __init__(self, parent=None): """头部区域,包括图标/搜索/设置/登陆/最大/小化/关闭。""" super(Header, self).__init__() self.setObjectName('Header') self.parent = parent self.loginBox = LoginBox(self) with open('QSS/header.qss', 'r', encoding='utf-8') as f: self.setStyleSheet(f.read()) # 加载按钮设置。 self.setButtons() # 加载标签设置。 self.setLabels() # 加载输入框设置。 self.setLineEdits() # 加载小细线装饰。 self.setLines() # 加载布局设置。 self.setLayouts() # 布局。 def setButtons(self): """创建所有的按钮。""" self.closeButton = QPushButton('×', self) self.closeButton.setObjectName("closeButton") self.closeButton.setMinimumSize(21, 17) self.showminButton = QPushButton('_', self) self.showminButton.setObjectName("minButton") self.showminButton.setMinimumSize(21, 17) self.showmaxButton = QPushButton('□') self.showmaxButton.setObjectName("maxButton") self.showmaxButton.setMaximumSize(16, 16) self.loginButton = QPushButton("未登录 ▼", self) self.loginButton.setObjectName("loginButton") self.prevButton = QPushButton("<") self.prevButton.setObjectName("prevButton") self.prevButton.setMaximumSize(28, 22) self.prevButton.setMinimumSize(28, 22) self.nextButton = QPushButton(">") self.nextButton.setObjectName("nextButton") self.nextButton.setMaximumSize(28, 22) self.nextButton.setMinimumSize(28, 22) def setLabels(self): """创建所需的所有标签。""" self.logoLabel = PicLabel(r'resource/format.png', 32, 32) self.descriptionLabel = QLabel(self) self.descriptionLabel.setText("<b>Music</b>") self.userPix = PicLabel(r'resource/no_music.png', 32, 32, r'resource/user_pic_mask.png') self.userPix.setMinimumSize(22, 22) self.userPix.setObjectName("userPix") def setLineEdits(self): """创建搜素框。""" self.searchLine = SearchLineEdit(self) self.searchLine.setPlaceholderText("搜索音乐, 歌手, 歌词, 用户") def setLines(self): """设置装饰用小细线。""" self.line1 = QFrame(self) self.line1.setObjectName("line1") self.line1.setFrameShape(QFrame.VLine) self.line1.setFrameShadow(QFrame.Plain) self.line1.setMaximumSize(1, 25) def setLayouts(self): """设置布局。""" self.mainLayout = QHBoxLayout() self.mainLayout.setSpacing(0) self.mainLayout.addWidget(self.logoLabel) self.mainLayout.addWidget(self.descriptionLabel) self.mainLayout.addSpacing(70) self.mainLayout.addWidget(self.prevButton) self.mainLayout.addWidget(self.nextButton) self.mainLayout.addSpacing(10) self.mainLayout.addWidget(self.searchLine) self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.userPix) self.mainLayout.addSpacing(7) self.mainLayout.addWidget(self.loginButton) self.mainLayout.addSpacing(7) self.mainLayout.addWidget(self.line1) self.mainLayout.addSpacing(30) self.mainLayout.addWidget(self.showminButton) self.mainLayout.addWidget(self.showmaxButton) self.mainLayout.addSpacing(3) self.mainLayout.addWidget(self.closeButton) self.setLayout(self.mainLayout) # 事件。 """重写鼠标事件,实现窗口拖动。""" def mousePressEvent(self, event): if event.buttons() == Qt.LeftButton: self.parent.m_drag = True self.parent.m_DragPosition = event.globalPos()-self.parent.pos() event.accept() def mouseMoveEvent(self, event): try: if event.buttons() and Qt.LeftButton: self.parent.move(event.globalPos()-self.parent.m_DragPosition) event.accept() except AttributeError: pass def mouseReleaseEvent(self, event): if event.buttons() == Qt.LeftButton: self.m_drag = False
class PhoneAndEMailFrame(QFrame): def __init__(self, parent=None): super(PhoneAndEMailFrame, self).__init__() self.parent = parent self.resize(520, 300) with open('QSS/phoneAndEMailFrame.qss', 'r') as f: self.setStyleSheet(f.read()) self.mainLayout = VBoxLayout(self) self.header = Header("用户名", self) self.header.setMinimumHeight(40) self.header.connectCloseButton(self.parent.accept) self.mainLayout.addWidget(self.header) self.mainLayout.addStretch(1) self.usernameLine = InputLine(self, 220, 32, '请输入用户名') self.usernameLine.setObjectName('usernameLine') self.usernameCenterBox = HStretchBox(self.mainLayout, self.usernameLine) self.mainLayout.addSpacing(10) self.passwordLine = InputLine(self, 220, 32, '请输入密码') self.passwordLine.setObjectName('passwordLine') self.passwordCenterBox = HStretchBox(self.mainLayout, self.passwordLine) self.passwordLine.setEchoMode(QLineEdit.Password) self.warningIconLabel = QLabel() self.warningIconLabel.setObjectName('warningIconLabel') self.warningIconLabel.setMaximumSize(14, 14) self.warningIconLabel.setMinimumSize(14, 14) self.warningIconLabel.hide() self.warningLabel = QLabel("请输入用户名") self.warningLabel.hide() self.warningLabel.setObjectName('warningLabel') self.warningCenterBox = HStretchBox(self.mainLayout, self.warningIconLabel, self.warningLabel, behindStretch=2) self.mainLayout.addSpacing(30) self.enterLoginButton = QPushButton("登 录") self.enterLoginButton.setObjectName("enterButton") self.enterLoginButton.setMaximumSize(217, 27) self.enterLoginButton.setMinimumSize(217, 27) self.enterLoginCenterBox = HStretchBox(self.mainLayout, self.enterLoginButton) self.mainLayout.addSpacing(30) self.mainLayout.addStretch(1) def checkAndGetLoginInformation(self): username = self.usernameLine.text() password = self.passwordLine.text() if not username or not password: self.warningIconLabel.show() if not username: self.warningLabel.setText('请输入用户名') self.warningLabel.show() return False if not password: self.warningLabel.setText('请输入密码') self.warningLabel.show() return False self.warningIconLabel.hide() self.warningLabel.hide() return username, password def setWarningAndShowIt(self, warningStr): self.warningLabel.setText(warningStr) self.warningLabel.show() self.warningIconLabel.show() def connectLogin(self, functionName): self.enterLoginButton.clicked.connect(functionName)
class Header(QFrame): def __init__(self, parent=None): """头部区域,包括图标/搜索/设置/登陆/最大/小化/关闭。""" super(Header, self).__init__() self.setObjectName('Header') self.parent = parent self.loginBox = LoginBox(self) with open('QSS/header.qss', 'r', encoding='utf-8') as f: self.setStyleSheet(f.read()) # 加载按钮设置。 self.setButtons() # 加载标签设置。 self.setLabels() # 加载输入框设置。 self.setLineEdits() # 加载小细线装饰。 self.setLines() # 加载布局设置。 self.setLayouts() # 布局。 def setButtons(self): """创建所有的按钮。""" self.closeButton = QPushButton('×', self) self.closeButton.setObjectName("closeButton") self.closeButton.setMinimumSize(21, 17) self.showminButton = QPushButton('_', self) self.showminButton.setObjectName("minButton") self.showminButton.setMinimumSize(21, 17) self.loginButton = QPushButton("未登录 ▼", self) self.loginButton.setObjectName("loginButton") self.prevButton = QPushButton("<") self.prevButton.setObjectName("prevButton") self.prevButton.setMaximumSize(28, 22) self.prevButton.setMinimumSize(28, 22) self.nextButton = QPushButton(">") self.nextButton.setObjectName("nextButton") self.nextButton.setMaximumSize(28, 22) self.nextButton.setMinimumSize(28, 22) def setLabels(self): """创建所需的所有标签。""" self.logoLabel = PicLabel(r'resource/format.png', 32, 32) self.descriptionLabel = QLabel(self) self.descriptionLabel.setText("<b>Music<b>") self.userPix = PicLabel(r'resource/no_music.png', 32, 32, r'resource/user_pic_mask.png') self.userPix.setMinimumSize(22, 22) self.userPix.setObjectName("userPix") def setLineEdits(self): """创建搜素框。""" self.searchLine = SearchLineEdit(self) self.searchLine.setPlaceholderText("搜索音乐, 歌手, 歌词, 用户") def setLines(self): """设置装饰用小细线。""" self.line1 = QFrame(self) self.line1.setObjectName("line1") self.line1.setFrameShape(QFrame.VLine) self.line1.setFrameShadow(QFrame.Plain) self.line1.setMaximumSize(1, 25) def setLayouts(self): """设置布局。""" self.mainLayout = QHBoxLayout() self.mainLayout.setSpacing(0) self.mainLayout.addWidget(self.logoLabel) self.mainLayout.addWidget(self.descriptionLabel) self.mainLayout.addSpacing(70) self.mainLayout.addWidget(self.prevButton) self.mainLayout.addWidget(self.nextButton) self.mainLayout.addSpacing(10) self.mainLayout.addWidget(self.searchLine) self.mainLayout.addStretch(1) self.mainLayout.addWidget(self.userPix) self.mainLayout.addSpacing(7) self.mainLayout.addWidget(self.loginButton) self.mainLayout.addSpacing(7) self.mainLayout.addWidget(self.line1) self.mainLayout.addSpacing(30) self.mainLayout.addWidget(self.showminButton) self.mainLayout.addSpacing(3) self.mainLayout.addWidget(self.closeButton) self.setLayout(self.mainLayout) # 事件。 """重写鼠标事件,实现窗口拖动。""" def mousePressEvent(self, event): if event.buttons() == Qt.LeftButton: self.parent.m_drag = True self.parent.m_DragPosition = event.globalPos() - self.parent.pos() event.accept() def mouseMoveEvent(self, event): try: if event.buttons() and Qt.LeftButton: self.parent.move(event.globalPos() - self.parent.m_DragPosition) event.accept() except AttributeError: pass def mouseReleaseEvent(self, event): if event.buttons() == Qt.LeftButton: self.m_drag = False
class DetailSings(ScrollArea): def __init__(self, parent=None): super(DetailSings, self).__init__(self) # self.hide() self.parent = parent self.setObjectName('detailSings') with open('QSS/detailSings.qss', 'r', encoding='utf-8') as f: self.setStyleSheet(f.read()) self.setLabels() self.setButtons() self.setTabs() self.setLayouts() # 布局。 def setLabels(self): self.picLabel = PicLabel(width=200, height=200) self.picLabel.setObjectName('picLabel') self.titleLabel = QLabel(self.frame) self.titleLabel.setObjectName('titleLabel') self.titleLabel.setWordWrap(True) self.titleLabel.setMaximumHeight(40) self.authorPic = QLabel(self.frame) self.authorName = QLabel(self.frame) self.authorName.setObjectName('authorName') self.authorName.setMaximumHeight(28) self.descriptionText = QTextEdit(self.frame) self.descriptionText.setReadOnly(True) self.descriptionText.setObjectName('descriptionText') self.descriptionText.setMaximumWidth(450) self.descriptionText.setMaximumHeight(100) self.descriptionText.setMinimumHeight(100) def setButtons(self): self.showButton = QPushButton("歌单") self.showButton.setObjectName('showButton') self.showButton.setMaximumSize(36, 20) self.descriptionButton = QPushButton(" 简介 :") self.descriptionButton.setObjectName('descriptionButton') self.descriptionButton.setMaximumSize(36, 36) self.playAllButton = QPushButton("全部播放") self.playAllButton.setIcon(QIcon('resource/playAll.png')) self.playAllButton.setObjectName('playAllButton') self.playAllButton.setMaximumSize(90, 24) def setTabs(self): self.contentsTab = QTabWidget(self.frame) self.singsTable = TableWidget(3, ['音乐标题', '歌手', '时长']) self.singsTable.setObjectName('singsTable') self.singsTable.setMinimumWidth(self.width()) self.singsTable.setColumnWidths({i:j for i,j in zip(range(3), [self.width()/3*1.25,self.width()/3*1.25,self.width()/3*0.5])}) self.contentsTab.addTab(self.singsTable, "歌曲列表") def setLayouts(self): self.mainLayout = VBoxLayout() self.topLayout = HBoxLayout() self.descriptionLayout = VBoxLayout() self.titleLayout = HBoxLayout() self.titleLayout.addWidget(self.showButton) self.titleLayout.addSpacing(5) self.titleLayout.addWidget(self.titleLabel) self.authorLayout = HBoxLayout() self.authorLayout.addWidget(self.authorPic) self.authorLayout.addWidget(self.authorName) self.authorLayout.addStretch(1) self.descriptLayout = HBoxLayout() self.descriptLayout.addWidget(self.descriptionButton) self.descriptLayout.addWidget(self.descriptionText) self.descriptionLayout.addSpacing(5) self.descriptionLayout.addLayout(self.titleLayout) self.descriptionLayout.addLayout(self.authorLayout) self.descriptionLayout.addSpacing(5) self.descriptionLayout.addWidget(self.playAllButton) self.descriptionLayout.addSpacing(10) self.descriptionLayout.addLayout(self.descriptLayout) self.topLayout.addWidget(self.picLabel) self.topLayout.addSpacing(18) self.topLayout.addLayout(self.descriptionLayout) self.mainLayout.addLayout(self.topLayout) self.mainLayout.addWidget(self.contentsTab) self.frame.setLayout(self.mainLayout)
class DetailSings(ScrollArea): def __init__(self, parent=None): super(DetailSings, self).__init__(self) # self.hide() self.parent = parent self.setObjectName('detailSings') with open('QSS/detailSings.qss', 'r', encoding='utf-8') as f: self.setStyleSheet(f.read()) self.setLabels() self.setButtons() self.setTabs() self.setLayouts() # self.config = ConfigDetailSings(self) # 布局。 def setLabels(self): self.picLabel = PicLabel(width=200, height=200) self.picLabel.setObjectName('picLabel') self.titleLabel = QLabel(self.frame) self.titleLabel.setObjectName('titleLabel') self.titleLabel.setWordWrap(True) self.titleLabel.setMaximumHeight(40) self.authorPic = QLabel(self.frame) self.authorName = QLabel(self.frame) self.authorName.setObjectName('authorName') self.authorName.setMaximumHeight(28) # self.descriptionLabel = QLabel(self.frame) self.descriptionText = QTextEdit(self.frame) self.descriptionText.setReadOnly(True) self.descriptionText.setObjectName('descriptionText') self.descriptionText.setMaximumWidth(450) self.descriptionText.setMaximumHeight(100) self.descriptionText.setMinimumHeight(100) # self.descriptionLabel.setWordWrap(True) def setButtons(self): self.showButton = QPushButton("歌单") self.showButton.setObjectName('showButton') self.showButton.setMaximumSize(36, 20) self.descriptionButton = QPushButton(" 简介 :") self.descriptionButton.setObjectName('descriptionButton') self.descriptionButton.setMaximumSize(36, 36) self.playAllButton = QPushButton("全部播放") self.playAllButton.setIcon(QIcon('resource/playAll.png')) self.playAllButton.setObjectName('playAllButton') self.playAllButton.setMaximumSize(90, 24) # self.playAllButton.clicked.connect(self.addAllMusicToPlayer) def setTabs(self): self.contentsTab = QTabWidget(self.frame) self.singsTable = TableWidget(3, ['音乐标题', '歌手', '时长']) self.singsTable.setObjectName('singsTable') self.singsTable.setMinimumWidth(self.width()) self.singsTable.setColumnWidths({ i: j for i, j in zip(range(3), [ self.width() / 3 * 1.25, self.width() / 3 * 1.25, self.width() / 3 * 0.5 ]) }) # self.singsTable.itemDoubleClicked.connect(self.itemDoubleClickedEvent) self.contentsTab.addTab(self.singsTable, "歌曲列表") def setLayouts(self): self.mainLayout = VBoxLayout() self.topLayout = HBoxLayout() self.descriptionLayout = VBoxLayout() self.titleLayout = HBoxLayout() self.titleLayout.addWidget(self.showButton) self.titleLayout.addSpacing(5) self.titleLayout.addWidget(self.titleLabel) self.authorLayout = HBoxLayout() self.authorLayout.addWidget(self.authorPic) self.authorLayout.addWidget(self.authorName) self.authorLayout.addStretch(1) self.descriptLayout = HBoxLayout() self.descriptLayout.addWidget(self.descriptionButton) self.descriptLayout.addWidget(self.descriptionText) self.descriptionLayout.addSpacing(5) self.descriptionLayout.addLayout(self.titleLayout) self.descriptionLayout.addLayout(self.authorLayout) self.descriptionLayout.addSpacing(5) self.descriptionLayout.addWidget(self.playAllButton) self.descriptionLayout.addSpacing(10) self.descriptionLayout.addLayout(self.descriptLayout) # self.descriptionLayout.setSpacing(0) self.topLayout.addWidget(self.picLabel) self.topLayout.addSpacing(18) self.topLayout.addLayout(self.descriptionLayout) self.mainLayout.addLayout(self.topLayout) self.mainLayout.addWidget(self.contentsTab) self.frame.setLayout(self.mainLayout)