t车窗弹出,无法关闭

2024-06-26 17:54:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个tkinter GUI python代码,它为我的代码创建了一个GUI接口,在后面的代码中使用了snack sound toolkit(它还使用Tk并使用root=Tk()创建了一个实例)。因为,以前的GUI应用程序的mainloop已经运行到每次snack函数被调用时弹出一个新的空的默认tk窗口。由于这种情况经常发生,当这段代码执行时,屏幕上有成百上千个空的tk窗口。我试着用很多方法关闭它们根目录。销毁,根。撤回,但没有解决方案。 在特金特有什么办法可以做到的吗?在

import tkSnack
import thread

import Tkinter as tk

class my_gui(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)

        self.button = tk.Button(self, text="Get", command=self.on_button)
        self.button.grid(row=8)

    def on_button(self):

        thread1 = thread.start_new_thread(run, (PATH_TO_WAVE_FILE,))

def run(path):

    for k in range(10):

        PITCH_VALUES = snack_work(path)
        print PITCH_VALUES

def snack_work(INPUT_WAVE_FILE):
    # initializing the snack tool
    root = tk.Tk()
    tkSnack.initializeSnack(root)
    # root.withdraw()
    mysound = tkSnack.Sound()

# processing original wave file
    mysound.read(INPUT_WAVE_FILE)

    PITCH_VALUES = mysound.pitch()
    return PITCH_VALUES

app = my_gui()
app.mainloop()

Tags: 代码importselfdefguibuttonrootwave
1条回答
网友
1楼 · 发布于 2024-06-26 17:54:33

使run()snack_work()成为app对象的实例方法,以便它们可以轻松地访问该对象的属性。为了使用一个不依赖外部库或文件的最小MCVE,我用简单的print()(我在python3上)和after()调用而不是snack测试了以下内容,因为我只想检查其他函数是否可以访问tkinter对象。在

import tkSnack
import thread
import Tkinter as tk

class my_gui(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)

        self.button = tk.Button(self, text="Get", command=self.on_button)
        self.button.grid(row=8)

    def on_button(self):
        thread1=thread.start_new_thread(self.run,(PATH_TO_WAVE_FILE,))

    def run(self, path):
        for k in range(10):
            PITCH_VALUES = self.snack_work(path)
            print PITCH_VALUES

    def snack_work(self, INPUT_WAVE_FILE):
        ## initializing the snack tool
        tkSnack.initializeSnack(self) # use self instead of the separate root object
        # self.withdraw()
        mysound=tkSnack.Sound()

        ## processing original wave file
        mysound.read(INPUT_WAVE_FILE)

        PITCH_VALUES= mysound.pitch()
        return PITCH_VALUES

app = my_gui()
app.mainloop()

相关问题 更多 >