2012-05-10 23 views
2

wxPythonを学んでいるので、テキストエディタで作業しています。同等のwx.EVT_TEXT_COPY/wx.EVT_TEXT_PASTE/wx.EVT_TEXT_CUTをバインドすることによって、wx.TextCtrlなどのコントロールから生成されたCUT/COPY/PASTE信号を傍受することができます。私が悩んでいるのは、他のテキストを使ってペーストをクリップボードに書き出す方法です。wx.TextCtrlに上書きコピー/コピー/貼り付け

たとえば、私はwx.ListBoxを持っています。ユーザーはテキストのクリップを保存し、後でそれを選択してwx.TextCtrlにペーストして、システムのクリップボードにあるテキストを貼り付けることができます。だから、基本的に私はペースト信号を傍受しようとしています。システムのクリップボードのテキストを貼り付ける代わりに、wx.ListBoxから選択した行をペーストします。これは可能ですか?もしそうなら、私はこれをどうやってやりますか?

答えて

2

簡単な解決策は、例えば、あなたのwx.EVT_TEXT_PASTEハンドラでSkip()を使用して、手動制御を更新することではありません。

textCtrl.Bind(wx.EVT_TEXT_PASTE, self.onPaste) 

def onPaste(self, evt): 
    #do not use evt.Skip() 
    print "PASTE but nothing happens" 
    #do some manual update of the control 

evt.Skip()がイベントを伝播し、コンテンツを貼り付け、デフォルトの動作を実行させるでしょう。コールがなければ、伝播をブロックし、デフォルト動作を置き換えることができます。

+0

私はSkip機能のそのプロパティについて認識していませんでした。それはまさに私が知る必要があったものです。ありがとう! – BrotherJack