猿问

Winsound 导致我的 tkinter GUI 打开缓慢

我正在使用 Python 开发 tkinter GUI,以在新窗口中生成错误消息。运行如下所示的代码时,会播放错误噪音,然后暂停几秒钟,然后打开窗口。如果我用winsound注释掉该行,它就可以很好地打开它。


import tkinter as tk

import winsound

class Error_Window:

    def __init__(self, txt):

        self.root = tk.Tk()

        self.root.title("Error")

        self.lbl = tk.Label(self.root, text=txt)

        self.lbl.pack()

        winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

        self.root.mainloop()

我怀疑这可能是由于在到达主循环命令之前完全播放错误噪音所致。解决此问题的一种方法是在单独的线程中运行声音,但我听说应该避免使用 tkinter 进行多线程处理。有什么技巧可以让它在播放噪音的同时顺利打开吗?


杨魅力
浏览 207回答 1
1回答

弑天下

试试这个,它这样做的原因是整个程序是我们应该说在一个线程/主线程中,这样它会首先执行或先执行声音,然后弹出窗口。我认为在 tkinter 中使用线程没有问题,就像 @jasonharper 所说的那样import tkinter as tkimport winsoundimport threadingclass Error_Window:    def __init__(self, txt):        self.root = tk.Tk()        self.root.title("Error")        self.lbl = tk.Label(self.root, text=txt)        th = threading.Thread(target=self.__play_sound,args=[])        th.start()        self.lbl.pack()        self.root.mainloop()     def __play_sound(self):        winsound.PlaySound("SystemExit", winsound.SND_ALIAS)Error_Window("Hi")
随时随地看视频慕课网APP

相关分类

Python
我要回答