14

ユーザーがウィジェットからテキストを選択してコピーすることしかできないようにウィジェットをロックするにはどうすればよいですか?TextそれでもText関数などからテキストを挿入することはできますか?

4

3 に答える 3

25

テキストウィジェットを無効にしてみましたか?

text_widget.configure(state="disabled")

一部のプラットフォームでは、ウィジェットにフォーカスを与えるためにバインディングを追加する必要もあり<1>ます。そうしないと、コピーの強調表示が表示されません。

text_widget.bind("<1>", lambda event: text_widget.focus_set())

ウィジェットを無効にした場合、プログラムで挿入するには、次のことを行う必要があります。

  1. ウィジェットの状態をに変更しますNORMAL
  2. テキストを挿入してから
  3. 状態をに戻しますDISABLED

updateその途中で電話をかけない限り、ユーザーがインタラクティブに何かを入力できるようにする方法はありません。

于 2012-05-30T14:08:52.230 に答える
7

パーティーに遅れて申し訳ありませんが、あなたと同じ解決策を探しているこのページを見つけました。

テキストウィジェットをデフォルトで「無効」にしてから、入力を与える関数の最初でそれを「通常」にし、関数の最後で再び「無効」にするとわかりました。

def __init__():
    self.output_box = Text(fourth_frame, width=160, height=25, background="black", foreground="white")
    self.output_box.configure(state="disabled")

def somefunction():
    self.output_box.configure(state="normal")
    (some function goes here)
    self.output_box.configure(state="disable")
于 2013-01-01T14:54:36.317 に答える
3

state="normal"/state="disabled" ソリューションにも出くわしましたが、そこからテキストを選択してコピーすることはできません。最後に、以下の解決策を見つけました: Tkinter テキスト ウィジェットを読み取り専用にする方法はありますか? 、このソリューションを使用すると、テキストを選択してコピーしたり、ハイパーリンクをたどることができます。

import Tkinter

root = Tkinter.Tk() 
readonly = Tkinter.Text(root)
readonly.bind("<Key>", lambda e: "break")
于 2016-12-21T06:01:32.833 に答える