LoginSignup
PERAIA
@PERAIA (k Ohno)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【Python/tkinter】テキストボックス内の文字列のうち1文字だけ色を変更したい

解決したいこと

tkinterを利用してタイピングアプリを作っているのですが
打ち間違えたキーを赤字で表示したいと考えています。
具体的には「programing」というお題がテキストボックスとして表示されている状態で
"a"をタイプミスしたときに
テキストボックス中の"programing"というテキストの"a"の部分だけを赤字に変更したいのですが、
何かよいアイデアをご存じの方がいれば教えて頂けますとありがたいです。

自分で試したこと

ttk.Label(self, foreground = 'red')

上記のとおり、ttk.Labelウィジェットには文字列全体の色を変更するオプション"foregoround"があるのは分かったのですが、
文字列のうち1文字だけの色変更したい場合にやり方が分かりません。

よろしくお願いいたします。

0

1Answer

tkinterを触ったことがなく知識はゼロで回答のコードに合わせて作ることはできませんが、調べてみて使えそうなコードがあったので紹介いたします。
https://www.tutorialspoint.com/python/tk_text.htm
https://zhuanlan.zhihu.com/p/143090561
https://stackoverflow.com/questions/57561232/changing-color-for-different-letters-in-python-tkinter

このようなコードでどうでしょうか。
お題の文字列を1文字ずつ区切る。
それをfor文で回し、入力とfor文の1つ目の文字(1文字目)を比較して間違っていたら色を変えて出力して、正解になるまで色を変えたまま出力する。
正解になったらfor文を1つ進めて次の文字と入力を同じように正誤を比較していき、以下全てを比較する。

1

Comments

  1. @PERAIA

    Questioner
    大変参考になるアドバイスありがとうございます。
    文字列を分解して正誤判定して、1文字ずつforegroundで色を変えていく方法でトライしてみたいと思います。

Your answer might help someone💌