2

私は音声録音アプリケーションをコーディングしており、ユーザーが Tkinter でボタンを押したときに録音を開始し、ユーザーがボタンを離したときに録音を停止したいと考えています。

import Tkinter

def record():
    while True
          Recordning runtines...
          if <button is released>
             stop audio steam...
             break


main = Tkinter.Tk()

b = Tkinter.Button(main, text='rec', command=record)
b.place(x="10", y="10")

main.mainloop()

「ボタンが離された場合」を達成するにはどうすればよいですか? スレッディングを使用する必要がありますか?

4

1 に答える 1

4

記録中に GUI をフリーズさせたくない場合は、マルチスレッドを使用することをお勧めします。ボタンのクリックとリリースは、イベント<Button-1><ButtonRelease-1>で実行できます。コードをクラスにラップしたので、作業スレッドを終了するためのフラグも含まれています。

import Tkinter as tk
import threading

class App():
    def __init__(self, master):
        self.isrecording = False
        self.button = tk.Button(main, text='rec')
        self.button.bind("<Button-1>", self.startrecording)
        self.button.bind("<ButtonRelease-1>", self.stoprecording)
        self.button.pack()

    def startrecording(self, event):
        self.isrecording = True
        t = threading.Thread(target=self._record)
        t.start()

    def stoprecording(self, event):
        self.isrecording = False

    def _record(self):
        while self.isrecording:
            print "Recording"

main = tk.Tk()
app = App(main)
main.mainloop()
于 2013-03-07T13:19:37.770 に答える