当我尝试在用户通过测试后播放“yay”音效时,我会显示制作人员名单。不过考虑到有些用户不耐烦,不想看,所以我做了一个tkinter窗口来显示是否看的选项。但是当用户单击“继续”时,tk 窗口卡住( Freezed window ),过了一会儿,又恢复正常了。
这可能不是一个很大的问题。但如果编译成exe文件,可能会导致突然退出而没有任何警告,这不是一个好的用户体验。那么有什么办法可以阻止卡住呢?
这是窗口卡住的代码的一部分。
class Success(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Yay! You have passed my chemistry challenge! Would you like to continue?",
font=LARGE_FONT)
label.pack(pady=10, padx=10)
button1 = tk.Button(self, text="Continue", command=lambda: [controller.show_frame(Credits), success1()])
button1.pack()
button2 = tk.Button(self, text="Quit", command=lambda: controller.destroy())
button2.pack()
def correspondingBehavior(self, choice):
print(choice)
class Credits(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self,
text="Credits: bababa..." )
label.pack(pady=10, padx=10)
button1 = tk.Button(self, text="Quit", command=lambda: controller.destroy())
button1.pack()
def correspondingBehavior(self, choice):
print(choice)
在编写代码之前,我导入了 playsound
模块并定义了 success1()
函数,如下所示:
def success1():
playsound("D:/Personal/Game/Yah.mp3")
最佳答案
不要让它阻塞主线程:
def success1():
playsound("D:/Personal/Game/Yah.mp3", block=False)
或者您可以创建一个新的线程
,但这可能会导致tkinter
稍后崩溃。
关于python - 当用户点击 "continue"时,tkinter 窗口在播放音效后卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67298813/