字を大きく表示したい
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()
これで、
「発声」を押せば何度でも音声が出る。「次」を押せば次の単語に行く。最後まで行くと自動的にウィンドウを閉じて終了・・。
といった動作を実現できました。