QTreeWidget应用 -- 酷我音乐下载

效果图:
QTreeWidget应用 -- 酷我音乐下载_第1张图片
最近在学习QTreeWidget,也就尝试着做一下应用。个人觉得像这种表格形式的用QTreeWidget看着还是比较清晰的。简单的添加了三个按钮,全选、全不选、反选,方便进行勾选,当点击下载歌曲时,就会对已经勾选的歌曲进行下载,下载歌曲采用的是线程方式。
从图中可以看出有5列,我们可以为其写一个类,使代码更加清晰

class TreeCol(Enum):
	col_order = 0  # 第一列
	col_song_name = 1  # 第二列
	col_singer_name = 2  # 第三列
	col_singer_album = 3  # 第四列
	col_song_time = 4  # 第五列

全选按钮功能

def do_btn_sel_all_clicked(self):
    for i in range(self.ui.treeWidget.topLevelItemCount()):
        item = self.ui.treeWidget.topLevelItem(i)
        item.setCheckState(TreeCol.col_order.value, Qt.Checked)

全不选按钮功能

def do_btn_sel_none_clicked(self):
    for i in range(self.ui.treeWidget.topLevelItemCount()):
        item = self.ui.treeWidget.topLevelItem(i)
        item.setCheckState(TreeCol.col_order.value, Qt.Unchecked)

反选按钮功能

def do_btn_sel_invs_clicked(self):
    for i in range(self.ui.treeWidget.topLevelItemCount()):
        item = self.ui.treeWidget.topLevelItem(i)
        if item.checkState(TreeCol.col_order.value) != Qt.Checked:
            item.setCheckState(TreeCol.col_order.value, Qt.Checked)
        else:
            item.setCheckState(TreeCol.col_order.value, Qt.Unchecked)

设置QTreeWidget文字居中

item.setTextAlignment(TreeCol.col_order.value, Qt.AlignCenter)

获取搜索歌单

def get_kuwo_songs(self, key, page=10):
    headers = {
        'User-Agent': "",
        'Referer': "",
        'csrf': "",
        'Cookie': ""
    }
    order = 0
    for i in range(1, page + 1):
        url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn={}".format(key, i)
        html = requests.get(url, headers=headers).json()
        data = html["data"]["list"]
        for dic_songs_info in data:
            song_name = dic_songs_info["name"]
            singer_name = dic_songs_info["artist"]
            song_time = dic_songs_info["songTimeMinutes"]
            singer_album = dic_songs_info["album"]
            # 显示到窗口
            self.show_songs_tree(order, song_name, singer_name, singer_album, song_time)
            order = order + 1

附 完整代码下载

你可能感兴趣的:(PyQt5)