エンドユーザがテキストウィジェットのテキストを編集/追加/削除することを抑制する方法は? (Python v3.2 ..とtkinter)python3-tkinterのRead Only Textウィジェット。クロスプラットフォーム
は、テキストを変更/追加/削除する機能のみを抑制しますが、他の機能を拒否することはできません。恐らくNoEdit Textが拡大された方が良い名前になるでしょう。
私はの.text [「状態」]を試してみました=「無効」と、それは、Windowsのほとんど OK (それはまだコピーテキストがページアップ/ダウンとアップ、選択を強調/ユーザが選択することを可能に働きました/下のボタンが機能します。壊れた唯一のものは目に見えないカーソルのようです。)しかし、マッキントッシュではすべてが壊れています。 TkinterにはPythonで事実上何のドキュメントを持っていないので何もハイライト、[いいえ]を選択/コピー、... UGH
は、私が検索されず、いくつかのTCLのアドバイスを発見し、新しいクラスを派生し、挿入を抑制し、削除しました機能。
だから、私はそうと試してみた:
class roText(tk.Text):
def insert(self,*args,**kwargs):
print(" Hey - Im inside roText.insert")
pass
def delete(self,*args,**twargs):
pass
def pInsert(self,*args,**twargs):
super().insert(*args,**twargs)
残念ながら、それが正しく動作しませんでした。明らかにエンドユーザがコードを入力/削除するとき、tkinterはそれらの挿入機能と削除機能を使用しません。おそらくそれらのTCLの挿入/削除は何か他のものであり、私はTCLとスワヒリから何か翻訳を失いました。 tkinter.Textはエンドユーザがテキストを編集するためにどのような機能を使用しますか?うまくいけば、彼らは内部ではありません...
だから、エンドユーザーの編集だけを抑制するためにテキストウィジェットを変更する方法はありますか? 内部のTkinterコード内でダイビングすることなくそれを行う方法があるので、Tkinterの次のリリースでは壊れないでしょうか?
アイドルシェルウィンドウを見ると、編集を抑制していることがわかります(最後の行を除く)。だから道がある。しかし、それは何で、どれくらいの費用がかかりますか?
OK、私はMacでテストするチャンスがありました。あなたが言ったように、<1>にバインドされたtext.focus_set()が問題を修正しました。 **ありがとう!!! **(おそらく、このページは解決策を探している人たちのためにクリーンアップすることができます。 残念ながら私は恐らくTkinterをMacに移植すると多くの問題の1つになっていたようだ。 '緑色'の色はボタンでは機能しません。ボタン上のテキストには間隔(これは解像度に関連する可能性があります)などが必要です。これらは回避するのが簡単で、悪化することはありません。 – Momus