241126_手把手教你使用PyQt手撸一个网易云音乐-(九)推荐页跳转逻辑实现

241126_手把手教你使用PyQt手撸一个网易云音乐-(九)推荐页、歌单列表跳转逻辑实现

我们观察推荐页的那些歌单点进去,发现无非就是一个图加几个label加歌单列表,如下图

image-20241129080946201

这界面和我们刚才做的喜欢的音乐界面差不多,我们就可以把我喜欢的音乐界面作为一个通用界面,只实现封面图的替换、label的text内容修改,歌单内容修改就ok了。

这里定义一个函数方法,我是把每个界面的label、time、info、pic_path都打包成一个字典dic然后传入进行解析的

    def recommended_page_switch(self,page_info):
        self.stackedWidget.setCurrentWidget(self.lkpage)
        self.List_title_name.setText(page_info['label'])
        self.List_title_time.setText(page_info['time'])
        self.List_title_intro.setText(page_info['intro'])
        
        # 后期更换歌单列表预留的接口
        self.musicList.clear()
        self.get_musicList_item()
        
        pic_path=':/PNG/'+page_info['pic_path']
        qss="border-image: url("+pic_path+");"
        print(qss)
        self.List_title_pic.setStyleSheet(qss)

后期可以根据自己是否想更换歌单列表去决定get_musicList_item是否传入参数file_path,也可以把path打包进dic内,自己决定就ok

然后我们定义各个歌单页的字典dic

# 各个推荐页的属性
lk_page={
    'label':'我喜欢的音乐',
    'intro':'这就是我喜欢的音乐',
    'time':'2019-05-05',
    'pic_path':'pic/lk.png'
}
daily_recommended={
    'label':'每日推荐',
    'intro':'每天为你推荐',
    'time':str(time.strftime("%Y-%m-%d", time.localtime())),
    'pic_path':'pic/feat1.png'
}
private_radar={
    'label':'私人雷达',
    'intro':'根据你的音乐口味推荐',
    'time':'2019-05-05',
    'pic_path':'pic/feat2.png'
}
private_roaming={
    'label':'私人漫游',
    'intro':'根据你的音乐口味推荐',
    'time':'2019-05-05',
    'pic_path':'pic/feat3.png'
}
daily_ballad={
    'label':'民谣日推',
    'intro':'民谣',
    'time':'2019-05-05',
    'pic_path':'pic/feat4.png'
}
mood_atmosphere={
    'label':'心情日推',
    'intro':'根据你的心情推荐',
    'time':'2019-05-05',
    'pic_path':'pic/feat5.png'
}
classic_music={
    'label':'古典音乐',
    'intro':'古典',
    'time':'2019-05-05',
    'pic_path':'pic/feat6.png'
}
cover={
    'label':'[好听的翻唱Cover集]',
    'intro':'翻唱Cover',
    'time':'2019-05-05',
    'pic_path':'pic/rec1.png'
}
wangshi={
    'label':'往事做壶酒,回忆成宿醉',
    'intro':'民谣',
    'time':'2019-05-05',
    'pic_path':'pic/rec2.png'
}
gandong={
    'label':'听一首把自己感动的歌',
    'intro':'感动',
    'time':'2019-05-05',
    'pic_path':'pic/rec3.png'
}
relax={
    'label':'下班路上/戴上耳机随时可以听的放松音乐',
    'intro':'放松',
    'time':'2019-05-05',
    'pic_path':'pic/rec4.png'
}
hearted={
    'label':'超甜/心动/奔向你的路上,风都是甜的',
    'intro':'心上无垢,林间有风',
    'time':'2019-05-05',
    'pic_path':'pic/rec5.png'
}
learning={
    'label':'不吵人的看书学习音乐',
    'intro':'学习',
    'time':'2019-05-05',
    'pic_path':'pic/rec6.png'
}

然后在init方法中绑定槽函数就ok了。对了,记得重命名

#推荐页及推荐页跳转
self.recommendedBtn.clicked.connect(lambda:self.stackedWidget.setCurrentWidget(self.recommendedpage))
       self.recommendedList1.clicked.connect(lambda:self.recommended_page_switch(daily_recommended))
       self.recommendedList2.clicked.connect(lambda:self.recommended_page_switch(private_radar))
       self.recommendedList3.clicked.connect(lambda:self.recommended_page_switch(private_roaming))
       self.recommendedList4.clicked.connect(lambda:self.recommended_page_switch(daily_ballad))
       self.recommendedList5.clicked.connect(lambda:self.recommended_page_switch(mood_atmosphere))
       self.recommendedList6.clicked.connect(lambda:self.recommended_page_switch(classic_music))
self.recommendedList7.clicked.connect(lambda:self.recommended_page_switch(cover))
       self.recommendedList8.clicked.connect(lambda:self.recommended_page_switch(wangshi))
       self.recommendedList9.clicked.connect(lambda:self.recommended_page_switch(gandong))
self.recommendedList10.clicked.connect(lambda:self.recommended_page_switch(relax))
       self.recommendedList11.clicked.connect(lambda:self.recommended_page_switch(hearted))
       self.recommendedList12.clicked.connect(lambda:self.recommended_page_switch(learning))

设置初始的每个stackwidget的默认页

# 各个stackwidget的初始page
self.stackedWidget.setCurrentWidget(self.recommendedpage)
self.stackedWidget_2.setCurrentWidget(self.musicpage)

到这里就ok了,可以去试试了,跳转逻辑基本是没问题的。

顺便把左侧导航栏的歌单跳转实现了把。还是那句话,我懒,所以直接把做好的歌单替换进了收藏歌单列表,然后实现跳转方法

# 歌单跳转
self.toolButton_gd1.clicked.connect(lambda: self.recommended_page_switch(cover))
self.toolButton_gd2.clicked.connect(lambda: self.recommended_page_switch(wangshi))
self.toolButton_gd3.clicked.connect(lambda: self.recommended_page_switch(gandong))
self.toolButton_gd4.clicked.connect(lambda: self.recommended_page_switch(relax))
self.toolButton_gd5.clicked.connect(lambda: self.recommended_page_switch(hearted))
self.toolButton_gd6.clicked.connect(lambda: self.recommended_page_switch(learning)

最后我们给返回上一层按钮绑定方法,这里我们无脑返回推荐页就行

self.BackspaceBtn.clicked.connect(lambda:self.stackedWidget.setCurrentWidget(self.recommendedpage))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值