tkinterとpyttsxを使用してユーザーとやりとりする小さなプログラムを作成しています。なんらかの理由で、スクリプトは「ボタンをクリックした」と言った後に終了しますが、メインループに留まる必要があります。見知らぬ人でさえ、メインループの下に追加した「チェックポイント」を通過することさえありません。この問題を解決するための方法pyttsxでテキストを話した後、Tkinter mainloopが突然終了する
import Tkinter as tk
import pyttsx
def button_click():
engine.say('button clicked')
engine.runAndWait()
engine = pyttsx.init()
root = tk.Tk()
gameframe = tk.Frame(root)
gameframe.pack()
readybutton = tk.Button(gameframe, text = 'click', command = button_click)
readybutton.pack()
root.mainloop()
print('checkpoint')
:
ここでエラーが発生したコードの簡易版ですか?
更新: via Googleこの問題は、イベントループを使用するtkinterとpyttsxの両方と、AppleのFoundationおよび/またはObjCモジュールがイベントをどのように処理するかと関係している可能性があります。私はPythonの初心者ですから、私はそれをうまく理解できませんが、あなたの中にはhttp://comments.gmane.org/gmane.comp.python.pyobjc.devel/5965があります。
また、私は完全にpyttsx使用して回避し、ほとんどがあまりに単純で、MAC-固有の回避策が見つかりました:これはあなたを作る何も
本当にメインループを終了するかどうかはわかりません。 runAndWait()メソッドでクラッシュする可能性があります。ここに私が見るものがあります:プログラムが「ボタンをクリック」した後、コードの最後に達したように終了します。作成されたTkinter GUI(ボタン)が消え、Terminal(mac)がコマンドライン入力モードに戻ります。また、エラーメッセージも表示されません。 –