class OneSing(QFrame): # 大量创建,这样可以省内存。 __solts__ = ('parent', 'ggparent', 'detailFrame', 'row', 'column', 'ids', 'picName', 'picLabel', 'nameLabel', 'mainLayout', 'mousePos', 'result','catch', 'singsIds', 'singsUrls') clicked = pyqtSignal(str, str) def __init__(self, row, column, ids=None, parent=None, picName=None): super(OneSing, self).__init__() self.setObjectName('oneSing') # 自己的位置信息。 self.row = row self.column = column # 歌单号。 self.ids = str(ids) # 大图的缓存名。 self.picName = picName self.setMinimumSize(180, 235) self.picLabel = QLabel() self.picLabel.setObjectName('picLabel') self.picLabel.setMinimumSize(180, 180) self.picLabel.setMaximumSize(180, 180) self.nameLabel = QLabel() self.nameLabel.setMaximumWidth(180) self.nameLabel.setWordWrap(True) self.mainLayout = QVBoxLayout(self) self.mainLayout.addWidget(self.picLabel) self.mainLayout.addWidget(self.nameLabel) # 功能。 def setStyleSheets(self, styleSheet=None): if styleSheet: self.setStyleSheet(styleSheet) # 事件。 def mousePressEvent(self, event): # 记录下当前鼠标的位置。 self.mousePos = QCursor.pos() def mouseReleaseEvent(self, event): # 先进行判断,防止误点将鼠标移开后还是会判断为已经点击的尴尬。 if QCursor.pos() != self.mousePos: return else: self.clicked.emit(self.ids, self.picName)
class OneSing(QFrame): # 大量创建,这样可以省内存。 __solts__ = ('parent', 'ggparent', 'detailFrame', 'row', 'column', 'ids', 'picName', 'picLabel', 'nameLabel', 'mainLayout', 'mousePos', 'result', 'catch', 'singsIds', 'singsUrls') clicked = pyqtSignal(int, str) def __init__(self, row, column, ids=None, parent=None, picName=None): super(OneSing, self).__init__() self.setObjectName('oneSing') # 自己的位置信息。 self.row = row self.column = column # 歌单号。 self.ids = ids # 大图的缓存名。 self.picName = picName self.setMinimumSize(180, 235) self.picLabel = QLabel() self.picLabel.setObjectName('picLabel') self.picLabel.setMinimumSize(180, 180) self.picLabel.setMaximumSize(180, 180) self.nameLabel = QLabel() self.nameLabel.setMaximumWidth(180) self.nameLabel.setWordWrap(True) self.mainLayout = QVBoxLayout(self) self.mainLayout.addWidget(self.picLabel) self.mainLayout.addWidget(self.nameLabel) # 功能。 def setStyleSheets(self, styleSheet=None): if styleSheet: self.setStyleSheet(styleSheet) # 事件。 def mousePressEvent(self, event): # 记录下当前鼠标的位置。 self.mousePos = QCursor.pos() def mouseReleaseEvent(self, event): # 先进行判断,防止误点将鼠标移开后还是会判断为已经点击的尴尬。 if QCursor.pos() != self.mousePos: return else: self.clicked.emit(self.ids, self.picName)
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.authorPic = QLabel(self.frame) self.authorName = QLabel(self.frame) self.authorName.setObjectName('authorName') self.authorName.setMaximumHeight(28) self.descriptionLabel = QLabel(self.frame) self.descriptionLabel.setObjectName('descriptionLabel') self.descriptionLabel.setMaximumWidth(450) self.descriptionLabel.setMaximumHeight(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 = QVBoxLayout() self.topLayout = QHBoxLayout() self.descriptionLayout = QVBoxLayout() self.titleLayout = QHBoxLayout() self.titleLayout.addWidget(self.showButton) self.titleLayout.addSpacing(5) self.titleLayout.addWidget(self.titleLabel) self.authorLayout = QHBoxLayout() self.authorLayout.addWidget(self.authorPic) self.authorLayout.addWidget(self.authorName) self.authorLayout.addStretch(1) self.descriptLayout = QHBoxLayout() self.descriptLayout.addWidget(self.descriptionButton) self.descriptLayout.addWidget(self.descriptionLabel) 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)