2011-02-07 8 views
0

gtk.TextViewがpygtk GUIでマウスクリックを無視する方法が必要です。pygtk読み込み専用gtk.TextView(マウスクリックを無視する)

ユーザ入力をprentするために 'editable'プロパティをfalseに設定しましたが、それでもマウスクリックに応答します。

このtextviewは他のコマンドからの出力を表示します。したがって、ユーザーがクリックすると、クリックされた場所にカーソルが移動します。私はそれを避ける必要があります。

私はset_property( 'sensitive'、False)の結果と似たものが必要ですが、ウィジェットをグレーアウトしません。ただそこに座って、あらゆる種類のユーザー入力を無視するだけです。

誰でもこれを達成するためのアイデアはありますか?

ありがとうございます。

答えて

1

答えを見つけました。興味のある人は、ここに行く。

実際、マウスクリックを無視する方法はありません。読み込み専用の種類のテキスト表示が必要な場合は、「編集可能」プロパティをFalseに設定します。これはキーボード入力を無視します。

もう1つは、テキストを挿入するときにinsert_at_cursorメソッドではなくinsertメソッドを使用することです。あなたが何をしたか

サンプル

tview = gtk.TextView() 
tview.set_property('editable', False) 


# Insert text at the end on the textview. 
buffer = tview.get_buffer() 
buffer.insert(buffer.get_end_iter(), 'This text goes at the end of the existing text') 

HTH

+0

将来的には、とにかく 'insert_at_cursor'メソッドではなく' insert'メソッドを使用したいと思っています。なぜなら、カーソルがどこにあるのかは決して分かりません。 – ptomato

7

は、あなたの目的のために優れています。あなたが実際にちょうどクリックをブロックしたい場合は、将来の参考のために、しかし、あなたはとても似button-press-eventTextViewを接続したい:それは返すように

tview.connect('button-press-event', tviewClicked) 

をハンドラ関数を定義True

def tviewClicked(widget,event): 
    return True 

ハンドラ関数からTrueを返すと、他のものに渡されないようにGTKに指示するので、クリックはTextViewに送られません。ユーザーはそれ以上クリックすることはできません。

これは古い質問ですが、このページに来る他の人に役立つかもしれません。 (コンソールのための良いアイデアではありません)

2
textview.set_property('editable', False) 
textview.set_property('cursor-visible', False) 

あなたも、ユーザーがテキストまたは右クリックを選択し、[コピー]を選択できるようにしたい場合は... @Derekレッドファーンが書いたように、あなたはbutton-press-eventを上書きする必要があります。

関連する問題