【问题标题】:Overwritting Cut / Copy / Paste to wx.TextCtrl覆盖剪切/复制/粘贴到 wx.TextCtrl
【发布时间】:2012-05-10 20:04:52
【问题描述】:

所以我正在学习 wxPython,为此我正在开发一个文本编辑器。我知道我可以通过绑定等效的 wx.EVT_TEXT_COPY / wx.EVT_TEXT_PASTE / wx.EVT_TEXT_CUT 来拦截从控件生成的 CUT / COPY / PASTE 信号,例如 wx.TextCtrl。我无法弄清楚的是如何用其他文本覆盖粘贴到剪贴板。

例如,我有一个 wx.ListBox,用户可以在其中存储文本剪辑,然后选择它们以粘贴到 wx.TextCtrl,而不是系统剪贴板上的任何文本。所以基本上我试图拦截粘贴信号,而不是粘贴系统剪贴板文本,让它粘贴来自 wx.ListBox 的选定行。这可能吗?如果是这样,我将如何去做?

【问题讨论】:

    标签: text widget wxpython copy-paste


    【解决方案1】:

    一个简单的解决方案是不要在您的 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() 将导致传播事件并执行粘贴内容的默认行为。如果没有调用,您会阻止传播,您可以替换默认行为。

    【讨论】:

    • 我不知道 Skip 函数的该属性。这正是我需要知道的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2013-05-13
    • 2011-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多