見出し画像

字を大きく表示したい

Pythonでの音声合成はできました。

単語を表示しながら、それを読み上げる、なんてのも、一応できました。
 ただ問題は表示。台湾華語の画数が多い漢字を、「ターミナル」に表示させても小さすぎて細かいところが見えません。(老眼なのです。)

 Windowをこさえて、その中にいろいろ表示するのは、tkinterと言うモジュールを使うのが一般的らしい。で、それを調べ始めたのですが、途中で Python解説動画_もなか さんのこちらの動画

を見たら、非常にわかりやすくて、tkinterはひとまず置いておいて、PySimpleGUI使うべきと強く思いました。本当に1時間ほどで肝心なことは理解できた気がします。
Anaconda 環境なのでpipではなく、

conda install conda-forge::pysimplegui

でpysimpleguiをインストール。

老眼でも見える大きい漢字で表示したい。
 自分のシステムに入っているフォントで、どんなフォントを使ったらよいか?は、MS-Word立ち上げて、大きくきれいなフォントが無いか探してみると、幸い中文フォントの中に「標楷體」という繁体字中文用の「楷書体」フォントがありまして、なかなかキレイなので使ってみました。どうせなので、フォントサイズ100くらいにして、どーんと表示させることにします。

import csv
import PySimpleGUI as sg
from myspeech_lib import myspeech
sg.theme('Default1')

size = (16,1)
lfont = ('標楷體', 100)
sfont = ('標楷體', 20)

with open('menu1.csv',newline='', encoding='utf-8') as csvfile:
    csvreader = csv.reader(csvfile, delimiter=',' )
    myiter = iter(csvreader)
    myword = next(myiter)[0]
    layout =[
        [sg.Text(myword, font = lfont,size = size, key="disp_main")],
        [sg.Button("次", font = sfont, key ="btn_next"),
        sg.Button("発声", font = sfont, key ="btn_speak")]
    ]
    window = sg.Window("発音覚える", layout)
    while True:
        event, value = window.read()
        if event == sg.WIN_CLOSED:
            break 
        if event == "btn_next":
            try:
                myword =next(myiter)[0]
                window["disp_main"].update(myword)
            except StopIteration:
                break
        if event == "btn_speak":
            myspeech("zh-TW",myword) 
    window.close()

これで、

「発声」を押せば何度でも音声が出る。「次」を押せば次の単語に行く。最後まで行くと自動的にウィンドウを閉じて終了・・。
 といった動作を実現できました。

いいなと思ったら応援しよう!