为什么按下 tkinter 按钮时 while 循环不启动?

问题描述 投票:0回答:1

我有一个基本的Python语音文本转录器。我想将它包装在一些简单的 GUI 中只是为了好玩,但是在尝试向其添加停止和启动按钮时遇到了很多麻烦。希望得到一些指导!

我想如果我添加一个按钮来设置 while 函数的值,它将能够启动和停止该函数,但是,这似乎不起作用。什么都没发生。

import speech_recognition as sr
import pyttsx3
import tkinter as tk

r = sr.Recognizer()

def start(value):
    global startCheck
    startCheck = 0
    variable = value

root = tk.Tk()
root.title("CrittyCorder")
root.geometry("500x500")

label = tk.Label(root, text="Critty Corder", font=('Arial',24))
label.pack(padx=20, pady=20)

buttonframe = tk.Frame(root)
buttonframe.columnconfigure(0, weight=1)
buttonframe.columnconfigure(1, weight=1)
buttonframe.columnconfigure(2, weight=1)

startbutton = tk.Button(buttonframe, text="Start 'cording", font=('Arial',18),command=lambda *args: start(1))
startbutton.grid(row=0, column=0)
stopbutton = tk.Button(buttonframe, text="Stop 'cording", font=('Arial',18),command=lambda *args: start(0))
stopbutton.grid(row=0, column=1)

buttonframe.pack(padx=20, pady=20)

root.mainloop()

def record_text():
    while(1):
        try:
            with sr.Microphone() as source2:
                r.adjust_for_ambient_noise(source2, duration=0.2)
                audio2 = r.listen(source2)

                MyText = r.recognize_google(audio2)

                return MyText

        except sr.RequestError as e:
            print("Couldn't get results; {0}".format(e))

        except sr.UnknownValueError:
            print("Unkown error occured")

    return

def output_text(text):
    f = open("critvoice.txt", "r")
    temp = f.read()
    f.close()
    f = open("critvoice.txt", "w")
    f.seek(0,0)
    f.write(text + '\n' + temp)
    f.write("\n")
    f.close()

    return

while(startCheck == 1):
    text = record_text()
    output_text(text)
    print("wrote text:", text)

我应该有其他方法来实现这个吗?

python user-interface tkinter
1个回答
0
投票

正如所指出的 - while 循环从未达到。弄乱了一个变量。但值得庆幸的是,我的主要问题是该怎么做而不是这个也得到了回答 - 使用 after 进行重构来管理重复任务。 – 蚝壳

© www.soinside.com 2019 - 2024. All rights reserved.