Tkinterで名前をつけて保存する機能を実装する方法

gTTSを使って音声読み上げソフトを作るシリーズですが、今回は名前をつけて保存する機能の実装が出来たので、メモとして残します。完成品は入力したもの保存するボタンを押すとどこに保存するかを聞くウィンドウが表示され名前と場所を決めて保存を押すとその場所に保存されます。

gTTSの使い方は、下記のサイトで詳しく書いているため、是非見てください

ソースコード

import tkinter.filedialog
class Frame(tkinter.Frame):
    def __init__(self,master):
        super().__init__(master)
        
        master.geometry("600x600")
        master.title("棒読み読み上げテスト")
        master.minsize(width=600,height=600)
        self.voice = []
        self.label = tkinter.Label(master,text="棒読み読み上げテスト",font=("",20))
        self.label1 = tkinter.Label(master,text="入力欄",font=("",20))
        self.input = tkinter.Text(master, font=("",20))
        self.button = tkinter.Button(master,text="音声を保存する", command=self.click) #
        self.button1 = tkinter.Button(master,text="▶︎", )
        self.button2 = tkinter.Button(master,text="■")

         
        
        self.input.grid(column=0, row=0, sticky=(tk.N, tk.S, tk.E,))
        self.button.grid(column=3, row=0, sticky=(tk.N,))
        self.button1.grid(column=1, row=0, sticky=(tk.N,))
        self.button2.grid(column=2, row=0, sticky=(tk.N,))

    def click(self):
        self.voice = self.input.get('1.0','end -1c') 
        voice =  gTTS(self.voice,lang='ja')
        voice.save(self.voice+".wav")
        ini_dir = 'C:\\temp' #追加
        ret = tkinter.filedialog.asksaveasfilename(initialdir=ini_dir)#追加
        self.save = voice.save
        voice.save(ret+".wav")#変更

        print(self.voice)

前回のコードに tkinter.filedialog を加えることで名前をつけて保存をすることが可能になります。ini_dir = ‘C:\\temp’では、名前をつけて保存する際にデフォルトで保存する場所を指定します。tkinter.filedialog.asksaveasfilenameでフォルダダイアログを開くことになります。

voice.save = (ret+”.wav”)でつけた名前で保存することが出来ます。

ちなみにキャンセルを押すと保存されませんステキ仕様です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA