2014-03-05 180 views
-1

我有一个使用TKinter GUI的程序。我试图在使用winsound播放声音的同时显示GUI框。它可以工作,但在盒子冻结并且崩溃之后。没有错误报告。我正在用Windows 7机器上的Python 3.3进行编程!请帮忙!下面是框和声音的代码:我想我可能知道你在说什么Winsound崩溃Tkinter GUI

  t1 = threading.Thread(target=winsound.PlaySound, args=("C:/Interactive Program/LIP Source Files/skyisup.wav", 2)) 
      t2 = threading.Thread(target=lipgui.msgbox, args = ("The sky is up.",)) 
      t2.start() 

      t1.start() 
+0

因此,我还制作了一个较小的程序,其中包含我的大型程序的这一部分,而较小的程序完美无瑕!我的大课程出了什么问题? –

+0

我认为这与我在更大程序中的循环有关。我真的需要帮助! –

+0

我建议你在问题中添加代码。 – Sam

回答

1

如果你正在一个线程中运行你的GUI代码,那很可能是问题所在。 Tkinter被设计成在单线程中运行,最好是主线程。如果您访问任何tkinter代码或在多个线程中与任何窗口小部件交互,它将崩溃。事实上,你把lipgui.msgbox放在一个线程中让我觉得这就是发生了什么。

+0

如果是这样的话。除了线程外,还有其他的方法吗?我可以同时运行Gui和声音文件吗? –

+0

只要你在一个线程中播放声音文件并在主线程中保留所有的gui函数,你应该没问题 –

+0

谢谢!出于某种原因,我从来没有想到这一点! –

0

....尝试只是代码,您认为让程序冻结前行加入这样的事情。 ..

root.update() 

“root”是您的主tkinter窗口的名称! 我从来没有与你说过的声音模块,但我认为应该做的伎俩!

+0

那么问题是GUI是我使用tkinter编程的模块。我试过了,它不起作用! –