有什么方法可以在使用Snack时摆脱Tk窗口?

时间:2013-10-03 13:47:51

标签: python tkinter

我正在尝试使用Snack制作一个简单的MP3播放器。它与Tkinter一起使用。以下是文档中有关其用法的内容:

The beginning of a program that uses Snack might look like:

    from Tkinter import *
    root = Tk()

    import tkSnack
    tkSnack.initializeSnack(root)

    # Now you can use tkSnack commands and objects
    # ...

root = Tk()行打开一个空窗口,可以在Snack和Snack初始化后继续工作(付费,暂停,恢复,加载音频等)后关闭。

有没有办法避免打开这个窗口?你可以解释为什么这样的库需要一个图形窗口才能工作吗?

2 个答案:

答案 0 :(得分:2)

如果使用root = Tk().withdraw(),则会创建Tk窗口但不显示。希望它甚至不会在屏幕上闪烁。

Tcl零食包是一个Tk扩展,有许多调用Tk函数的命令。因此原始设计并没有将其分解为窗口和非窗口部分。但是,Tk不需要使用零食,但您必须在某个时刻运行事件循环。例如,在Tcl脚本(无Tk)中,您可以执行以下操作:

package require snack
snack::sound snd -file $filename
snd play -blocking 0
after 5000 {set waiting 1}
vwait waiting

这将设置snd命令并配置文件数据,然后告诉它播放。但是,在我们启动事件循环(vwait waiting)之前不会发生任何事情,在这种情况下,我们会在5秒内安排一些事情来等待等待。

查看tkSnack源代码可能会帮助您将上述内容转换为pythonic。它们只是Tcl / Tk包的包装。但我怀疑运行Tk窗口有助于播放音乐。

答案 1 :(得分:1)

您可以使用root.withdraw()方法隐藏窗口。

或者,如果您计划再次使用它,请使用root.deiconify()