0

我正在使用 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()

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

4

1 回答 1

0

试试这个,它这样做的原因是整个程序是我们应该在ONE THREAD/MAIN THREAD中说它会先执行还是先执行声音然后弹出窗口。我认为就像@jasonharper 所说的那样,在 tkinter 中使用线程没有问题

import tkinter as tk
import winsound
import threading

class 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")
于 2020-10-07T13:04:45.403 回答