text - 将剪切/复制/粘贴覆盖到 wx.TextCtrl

标签 text widget wxpython copy-paste

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

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

最佳答案

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

关于text - 将剪切/复制/粘贴覆盖到 wx.TextCtrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541317/

相关文章:

android - 查询文本文件到数据库中

R:如何在数据框中输出唯一的字符串(文本)?

python - 在 Python 中设置正确的 Tkinter 小部件位置

click - searchctrl EVT_LEFT_DOWN 事件不起作用(wxpython)

java - 使用 Java 中的 Scanner 类读取文本文件的特定部分

excel - 如何将文本导入时间格式?

qt - 通过单击 qt gui 应用程序中的按钮启动新表单?

javascript - 用于流数据的良好 javascript 小部件

Python WX - 从 wx 对话框返回用户输入

python - 在 WxPython 的“文件保存”对话框中检查覆盖