python 播放器修复崩溃问题

上个版本的播放器可以实现简单的音乐播放,在测试的过程中发现时不时的会崩溃,
在网上找没找到解决办法,有说是pygame和tkinter不兼容的,有说tkinter有问题的。。。。。。
经过测试发现问题出在多线程上,反复测试才发现是多线程在资源分配上出问题,找到问题就好办了,既然是多线程的数据分配问题那就通过加锁解决,多个线程共同对某个数据修改,则可能出现不可预料的结果,为了保证数据的正确性,需要对多个线程进行同步。

修改代码为:

#-*- coding: utf-8 -*-
import tkinter
import time
import threading
import pygame
from tkinter import filedialog
#测试过程发现经常崩溃,可能是线程切换导致数据错误,加锁保证线程不被其他线程占用
lock = threading.Lock()
root = tkinter.Tk()
root.title('音乐播放器v1.10')
#root.iconbitmap('./mu.ico')#更换标题图标
root.iconbitmap('./mp.ico')
#窗口大小及位置
root.geometry('460x600+500+100')

root.resizable(False, False)
playing = True
res = []
files = []
num = 0
#添加文件函数
def buttonChooseClick():
    # 选择要播放的音乐文件夹
    global res
    global files
    fpath = filedialog.askopenfilenames(filetypes=(("File", "*.mp3;*.wav"),))  # 必须加逗号,为多个元组
    files.append(list(fpath))
    ret = []
    del res[:]
    for i in files:
        for m in i:
            res.append(m)
    for i in files:
        for m in i:
            ret.append(m.split('/')[-1:])
        var2 = tkinter.StringVar()
        var2.set(ret)
        lb = tkinter.Listbox(root, listvariable=var2)
        lb.place(x=50, y=100, width=260, height=300)

    # 根据情况禁用和启用相应的按钮

    buttonPlay['state'] = 'normal'

    buttonStop['state'] = 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值