2

だから私はwxPythonを学んでいて、そうするために私はテキストエディタに取り組んでいます。同等のwx.EVT_TEXT_COPY/wx.EVT_TEXT_PASTE / wx.EVT_TEXT_CUTをバインドすることにより、wx.TextCtrlなどのコントロールから生成されたCUT / COPY/PASTE信号をインターセプトできることを知っています。私が理解するのに苦労しているのは、クリップボードへの貼り付けを他のテキストで上書きする方法です。

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

4

1 に答える 1

2

簡単な解決策は、ハンドラーで使用せず、Skip()コントロールwx.EVT_TEXT_PASTEを手動で更新することです。例:

    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()により、イベントが伝播され、コンテンツを貼り付けるデフォルトの動作が実行されます。呼び出しがなければ、伝播をブロックし、デフォルトの動作を置き換えることができます。

于 2012-05-10T20:44:28.600 に答える