質問: tk.Entry(width=45) txt_4.place(x=90, y=300) window.mainloop() ``` ### 使用方法 1.文字入力と書いているテキストボックスに文章を入れる。 2.上にある要素解析ボタンを押す。 3.下にあるリセットボタンでテキストボックス内を消去する。 ### 構文のコピペ元 Python, Janomeで日本語の形態素解析、分かち書き(単語分割) ### 初投稿、お見苦しい点ご了承ください。
回答: とりあえずどこまでわかってるのかよくわかりませんのでいちいち書きますが、 形態素解析の実際の出力処理をやっているのは btn_click関数内で他の部分はGUIの書き出しや制御。 btn_clickX関数はテキストフィールドの値をリセットする処理をやっています。 なのでbtn_click関数部分のみに言及させていただきます。 形態素解析の結果をリストで返してくれるt.tokenize(s)処理をfor文で出力してみるとわかりますが、 ``` for token in t.tokenize(s): print(token.surface) ``` ``` 本日 は 晴天 なり 、 そして 私 は 買い物 に 出る 。 ``` このように入力順で返してくれていることがわかります。 入力順と逆になってしまうのは ``` print([txt_2.insert(0,token.surface+";") for token in t.tokenize(s) if token.part_of_speech.startswith('名詞')])# ←ここの機能 ``` この処理のtxt_2.insert関数の一つ目の引数に0を設定しており、 文字を追加していくたび先頭に追加されてしまうためです。 入力順で表示させたいのなら ``` print([txt_2.insert(tk.END,token.surface+";") for token in t.tokenize(s) if token.part_of_speech.startswith('名詞')])# ←ここの機能 ``` txt_2.insert関数の一つ目の引数にtk.ENDを設定すれば、 文字の最後に追加してくれるようになります。